0

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

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

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

[<__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>)
4

1 回答 1

1

不要这样做。

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

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

for p in list(self.parameters):
    print p
    ...
    self.parameters.append(...) # Okay
于 2012-07-27T23:29:01.723 回答