3

我尝试在 Pyscripter 中运行以下代码,但它一直返回错误“'list' object is not callable”。我通过 Python shell 运行代码,它运行得非常好。我不太明白为什么它在 Pyscripter 中不起作用。另外,我使用的是 Python 2.7。

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

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

list()

提前致谢!

4

3 回答 3

11

几乎可以肯定你已经将名单反弹到一个列表实例:

>>> 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等。

于 2012-06-04T18:11:28.573 回答
5

您在之前的某个地方创建了一个列表并将其命名为list。这是一个坏主意。该名称list在 Python 中没有特殊处理。当您启动解释器时,list命名列表类型,但如果您随后命名其他内容list,则list不再是列表类型的名称,因为名称一次只能引用一件事。

因此,当您编写list()期望创建一个新列表(即实例化列表类型)时,Python 会做它一直做的事情:它查找 name list,然后尝试将()(即__call__)应用于具有该名称的任何内容。由于listnow 引用了其他一些 list'list' objects are not callable ,因此正如错误消息所说,这将失败, as 。

于 2012-06-04T18:14:06.950 回答
0

单词liststr是 Python 中的关键字。这就是脚本出现错误的原因。您可以尝试以下方法:

import itertools

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

List = [1,2,3,4,5,6]
print(list(itertools.permutations(List, 2)))

干杯!!

于 2016-01-15T14:09:20.740 回答