在Python 中的循環中修改列表元素
在Python 中,嘗試在使用循環迭代列表元素時修改列表元素通常會產生意外結果。了解此行為的基本機制對於有效的清單操作至關重要。
例如,考慮以下程式碼:
li = ["spam", "eggs"] for i in li: i = "foo" print(li) # Output: ["spam", "eggs"]
儘管在循環中將「foo」分配給 i,但內容li 保持不變。此行為源自於 Python 迭代列表的方式。
循環機制
li 中i 的循環行為類似於以下內容:
for idx in range(len(li)): i = li[idx] i = 'foo'
因此,為i 分配新值不會改變li 的第i 個元素。要修改循環內的列表元素,需要替代方法。
替代解決方案
一個解決方案是使用列表推導式:
li = ["foo" for i in li] print(li) # Output: ["foo", "foo"]
或者,迭代列表的索引:
for idx in range(len(li)): li[idx] = 'foo' print(li) # Output: ["foo", "foo"]
最後,還可以利用枚舉:
for idx, item in enumerate(li): li[idx] = 'foo' print(li) # Output: ["foo", "foo"]
透過了解循環機制並採用適當的方法,程式設計師可以有效地修改Python 中循環內的列表元素。
以上是為什麼在 Python 列表循環中修改'i”不會改變列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!