我试图实现一个简单的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)
之后,我运行程序,我得到这个错误:
TypeError: range object is not callable
我检查了我是否在任何地方将列表定义为变量,但是我没有。
似乎从错误,你覆盖了range
内置命名一个变量"范围"?
一般来说,要从内存中删除一个变量,您不必重新启动笔记本内核,您可以使用del
关键字/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..
我尝试重新启动内核并运行所有内容。
因为如果你曾经定义了一个名为list的变量,即使你后来删除了它,记事本也会处理"列表";作为一个变量,直到您重新启动内核。
重新启动内核解决了我的问题!