我尝试在Pyscripter中运行以下代码,但它一直返回错误“'list'对象不可调用”。我通过Python shell运行代码,它工作得非常好。我不太明白为什么它不能在Pyscripter中工作。另外,我正在使用Python 2.7。
import itertools
print list(itertools.permutations([1,2,3,4], 2))
即使在Pyscripter中创建一个简单的列表也会返回相同的错误。
list()
提前致谢!
答案 0 :(得分:9)
几乎可以肯定,您已将名单反弹到列表实例:
>>> import itertools
>>> print list(itertools.permutations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
>>>
>>> list = [2,3,4]
>>> list(itertools.permutations([1,2,3,4], 2))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
请勿拨打列表list
或字符串str
等。
答案 1 :(得分:5)
您之前在某处创建了一个列表,并将其命名为list
。这是一个坏主意。名称list
未在Python中专门处理。当您启动解释器时,list
命名列表类型,但如果您将其他名称命名为list
,则list
不能再是列表类型的名称,而是名称只能一次提到一件事。
因此,当您编写list()
期望创建新列表(即实例化列表类型)时,Python会执行以下操作:它会查找名称list
,然后尝试应用()
(即__call__
)到具有该名称的任何内容。由于list
现在引用其他一些列表,因此与'list' objects are not callable
一样失败,正如错误消息所说的那样。
答案 2 :(得分:0)
单词 list 和 str 是Python中的关键字。这就是脚本出错的原因。您可以尝试以下方式:
user-init-file
干杯!!