TypeError: the range object is not callable
TypeError: the range object is not callable
我正在尝试实现一个简单的 python 函数来生成给定 之前所有素数的列表。您可以在下面找到代码片段。
def prime_list(n):
non = []
for i in range(2, n+1):
for j in range(2, n+1):
if i*j<=n:
non.append(i*j)
non.append(1)
unique = set(non)
prime = []
for i in range(1, n+1):
if i not in unique:
prime.append(i)
prime = list(prime)
return prime
my_prime = prime_list(100)
print(my_prime)
之后,我运行这个程序,我得到了这个错误:
类型错误:范围对象不可调用
我检查过我是否在任何地方将列表定义为变量,但我没有。
我尝试重新启动内核和 运行 一切。
因为如果你定义了一个名为list的变量,即使你后来删除了它,notebook也会把“list”当作一个变量,直到你重启内核。
重启内核解决了我的问题!
从错误看来,您似乎通过命名变量“range”覆盖了 range
内置函数?
一般从内存中删除一个变量,不用重启notebook内核,可以使用del
keyword/builtin.
例如
example = [1,2]
del example
print(example)
# NameError: name 'example' is not defined
即使删除隐藏内置函数名称的变量也能正常工作,并替换对内置函数的引用。
例如
range = [1, 2, 3] # oops!
del range
for i in range(10):
print(i)
# 1
# 2
# 3 etc..
我正在尝试实现一个简单的 python 函数来生成给定 之前所有素数的列表。您可以在下面找到代码片段。
def prime_list(n):
non = []
for i in range(2, n+1):
for j in range(2, n+1):
if i*j<=n:
non.append(i*j)
non.append(1)
unique = set(non)
prime = []
for i in range(1, n+1):
if i not in unique:
prime.append(i)
prime = list(prime)
return prime
my_prime = prime_list(100)
print(my_prime)
之后,我运行这个程序,我得到了这个错误:
类型错误:范围对象不可调用
我检查过我是否在任何地方将列表定义为变量,但我没有。
我尝试重新启动内核和 运行 一切。
因为如果你定义了一个名为list的变量,即使你后来删除了它,notebook也会把“list”当作一个变量,直到你重启内核。
重启内核解决了我的问题!
从错误看来,您似乎通过命名变量“range”覆盖了 range
内置函数?
一般从内存中删除一个变量,不用重启notebook内核,可以使用del
keyword/builtin.
例如
example = [1,2]
del example
print(example)
# NameError: name 'example' is not defined
即使删除隐藏内置函数名称的变量也能正常工作,并替换对内置函数的引用。
例如
range = [1, 2, 3] # oops!
del range
for i in range(10):
print(i)
# 1
# 2
# 3 etc..