新手學python錯誤(一)——刪除列表元素


刪除列表元素所犯下的錯誤:為什么不能循環刪除該元素?怎么這個元素還沒刪完?

eg:

刪除列表中所有 ‘1’ 的錯誤方法:

x = [1,2,1,2,1,2,1,2,1,1,1,1,1,1]
for i in x:
    if i == 1:
        x.remove(i)
print(x)

輸出的是:

[2, 2, 2, 2, 1, 1, 1]

而正確的方法是:

for i in x[::]:
    if i == 1:
        x.remove(i)

另外比如這個:

刪除列表中第一個元素:

x = list(range(20))
for i in range(len(x)):
    del x[0]
print(x)

輸出的卻是:

[]

結論是:

出現這個問題的原因是列表的自動內存管理功能。在刪除列表元素時,python 會自動對列表內存進行收縮並移動列表元素以保證所有元素之間沒有空隙,增加列表元素時也會自動擴展內存並對元素進行移動以保證元素之間沒有空隙。每當插入或刪除一個元素之后,該元素位置后面所有元素的索引就都改變了。 ——《python程序設計(第2版)》 36頁


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM