在Python 中使用for 循環遍歷列表時,用戶可能會遇到意外的情況,即無法在不使用列表推導式的情況下更改其元素。
問題的癥結在於for i in li 循環結構的行為。在內部,它按如下方式迭代:
for idx in range(len(li)): i = li[idx] i = 'foo'
如所見, i 最初被分配了對列表中元素的引用。對 i 的任何後續修改只會影響局部變量,而不影響列表項本身。
要解決此問題,可以利用列表推導式:
li = ["foo" for i in li]
或者,明確遍歷索引:
for idx in range(len(li)): li[idx] = 'foo'
或者,明確遍歷索引:
for idx, item in enumerate(li): li[idx] = 'foo'或者,枚舉可以是用來簡化流程:
以上是為什麼我不能直接在'for”循環中修改 Python 列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!