0

このオブジェクトのリストに1つのアイテムが含まれています。

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

lsitのリストとlenを印刷すると、期待される1つのアイテムが表示されます。しかし、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 に答える