“对于列表中的项目” - 无项目来自哪里?

时间:2012-07-27 22:54:43

标签: python

我得到了一个包含一个项目的对象列表。

    print self.parameters
    print len(self.parameters)
    for p in self.parameters:
        print p

当我打印出列表和len的len时,我看到了预期的:一个项目。 但是当我在lsit上循环时,我也得到一个无项......!

[<__main__.Parameter object at 0x00000000022D4828>]
1
<__main__.Parameter object at 0x00000000022D4828>
None

这里发生了什么? (是的,我确定,“无”输出来自此打印声明)


编辑: 我正在操纵我正在循环的列表:

print self.parameters
print len(self.parameters)
for p in self.parameters:
    print p
    (...)
    self.parameters.append(<something that returned None>)

1 个答案:

答案 0 :(得分:1)

不要这样做。

for p in self.parameters:
    print p
    ...
    self.parameters.append(...) # No.

请参阅Modifying list while iterating - 基本上,在迭代时不应修改某些内容。如果需要,您可以制作副本:

for p in list(self.parameters):
    print p
    ...
    self.parameters.append(...) # Okay