這是一個有效的Python行爲?我認爲最終結果應該是[0,0,0],並且id()函數應該在每次迭代中返回相同的值。如何使pythonic,而不是使用枚舉或範圍(len(bar))?python將值分配給循環中的列表元素
bar = [1,2,3]
print bar
for foo in bar:
print id (foo)
foo=0
print id(foo)
print bar
輸出:
[1, 2, 3]
5169664
5169676
5169652
5169676
5169640
5169676
[1, 2, 3]
+1討論CPython的實現細節。這意味着,如果您可以更改存儲在「5169664」處的值,那麼這樣做會是災難性的,因爲它會改變當前設置爲1的_every_變量。 – Kevin
「枚舉」可能比使用len(bar) '。 – Matthias
我認爲這是問題部分的正確答案:爲什麼會發生?什麼是pythonic的方式來做到這一點?請參閱@Kevin答案 –