我是一個新手到Python,但我明白,事情不應該做這種方式,所以請考慮下面的代碼片段作爲純粹的教育:-)列表修改
我目前閱讀「Python入門」,並試圖充分了解下面的例子:
>>> L = [1, 2, 3, 4, 5]
>>> for x in L:
... x += 1
...
>>> L
[1, 2, 3, 4, 5]
,如果這種行爲是有點相關的數字類型的不變性我不明白,所以我已經運行下面的測試:
>>> L = [[1], [2], [3], [4], [5]]
>>> for x in L:
... x += ['_']
...
>>> L
[[1, '_'], [2, '_'], [3, '_'], [4, '_'], [5, '_']]
問題:是什麼讓列表在第一個代碼中保持不變並在第二個代碼中更改?
我的直覺是,語法是誤導,認爲:
x += 1
一個整數的真正含義x = x + 1
(因此分配一個新的基準)的列表x += ['_']
的真正含義x.extend('_')
(從而改變列表中)
你的直覺是正確的 – 2012-03-28 12:12:19
爲了完整性,「正確」的方法是'[x + 1 for x in L]' – Kimvais 2012-03-28 12:17:55
@Kimvais:假設你想創建一個新列表。 – MattH 2012-03-28 12:26:20