Python代码工作正常第一次,但失败第二次

问题描述:

我第一次从笔记本电脑上运行的代码块,它工作正常:Python代码工作正常第一次,但失败第二次

#Which letters and how many 
letters = ["a","b","c"] 
noOfLetters = len(letters) 

#Looking for all permutations 
resultA = [] 
from itertools import permutations 
for i in range(noOfLetters): 
    resultA.append(list(permutations(letters,i+1))) 

如果我再次运行(无需重新启动内核),我得到的以下错误:

TypeError         Traceback (most recent call last) 
<ipython-input-5-4050a4ce7a36> in <module>() 
     7 from itertools import permutations 
     8 for i in range(noOfLetters): 
----> 9  resultA.append(list(permutations(letters,i+1))) 

TypeError: 'list' object is not callable 
+3

在这个代码后的某个时刻,你做'名单= '。这会隐藏内置的'list'并导致问题。将它重命名为“lst”或别的东西。尽量不要影响内置插件 –

+0

感谢Adam,确实如此。 – GDP

+0

@GretelDePaepe如果您*必须*使用与内置相同的名称,则一种约定是为该名称附加下划线:例如,在这种情况下,为'list_ =。 。 .'不会覆盖内置的'list'。 – dbliss

假设“记事本”是Jupyter(以前IPython的笔记本电脑),你必须要小心,jupyter保留所有变量的状态。

- >这意味着第二次运行的变量已经初始化为第一次运行结束时的值。

避免这种情况的一种方法是重新启动内核;另一种是删除所有变量;还有一个就是每次运行时初始化所有的变量。

docs

To restart the kernel (i.e. the computational engine), click on the menu Kernel -> Restart. This can be useful to start over a computation from scratch (e.g. variables are deleted, open files are closed, etc...).