Python'list'对象不可调用

时间:2012-06-04 18:09:27

标签: python pyscripter

我尝试在Pyscripter中运行以下代码,但它一直返回错误“'list'对象不可调用”。我通过Python shell运行代码,它工作得非常好。我不太明白为什么它不能在Pyscripter中工作。另外,我正在使用Python 2.7。

import itertools
print list(itertools.permutations([1,2,3,4], 2))

即使在Pyscripter中创建一个简单的列表也会返回相同的错误。

list()

提前致谢!

3 个答案:

答案 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

干杯!!