2012-07-27 37 views
0

我得到了這個物品的列表,其中的一個項目。「列表中的項目」 - None項來自哪裏?

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

當我打印出列表和lsit的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>) 
+0

這是在一個函數內?你在說'print self.doSomething()'在別的地方嗎? – 2012-07-27 22:55:53

+0

在這個循環之後,程序中沒有其他打印可以做到這一點? – 2012-07-27 22:58:35

+0

也有可能創建一個完整的,最小的程序來演示這個問題? – 2012-07-27 22:58:49

回答

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