首頁 > 後端開發 > Python教學 > 為什麼在 Python 列表循環中修改'i”不會改變列表?

為什麼在 Python 列表循環中修改'i”不會改變列表?

DDD
發布: 2024-12-08 00:32:15
原創
924 人瀏覽過

Why Doesn't Modifying `i` in a Python List Loop Change the List?

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板