今天由于要對一個 list 數據類型寫一個循環刪除的程序(這是小編第一次對于 list 操作),但發現一個奇異問題,來,我們來看看代碼跟效果:
成都地區優秀IDC服務器托管提供商(創新互聯).為客戶提供專業的內蒙古服務器托管,四川各地服務器托管,內蒙古服務器托管、多線服務器托管.托管咨詢專線:028-86922220
# 初始化一個 list 列表,為了下邊的方便比較,我就使用跟 list 索引來做 list 的元素
datas = [0,1,2,3,4]
# 打印元素組,方便比較
print(datas)
#使用 for 遍歷
for data in datas:
# 刪除 list 中的元素
datas.remove(data)
# 打印刪除后的數組
print(datas)
我們來看這一段代碼,最后的輸出結果,按照我以前的經驗,應該是一個空的 [] ,但結果不是:
上面的結果卻告訴我們,上面的程序只刪除了三個元素,并沒有全部刪除完,為什么呢?從上面的結果中,我們可以看出,刪除的元素是 1,3,5,從這我們可以看出,原來,是 list 在 for 循環中的索引問題,我們來實時跟蹤一下 list 列表在 for 中的變化:
# 初始化一個 list 列表,為了下邊的方便比較,我就使用跟 list 索引來做 list 的元素
datas = [0,1,2,3,4]
# 打印元素組,方便比較
print(datas)
# 記錄是第幾次 for 循環
index = 1
# 記錄 datas 當前循環的下標值
i = 0
#使用 for 遍歷
for data in datas:
# 打印循環次數
print('\n這是第 %d 次循環,datas 當前在 for 循環中的下標值為:%d,刪除前 datas 的元素為:' %(index, i))
# 實時打印 datas 列表
print(datas)
# 刪除 list 中的元素
datas.remove(data)
# 循環次數+1
index += 1
# 索引 +1
i += 1
# 最后的 datas 列表
print('\n循環結束,最后的 datas 的元素為:')
print(datas)
輸出結果如下:
如上圖可以看出,在 for 循環中 datas 沒刪除一個元素,它的索引都會變化,但 for 循環中遍歷的索引,總會加 1 ,所以,就會出現以上這種跳過性刪除的情況。對于這種情況,小編自己想到了一個方法,我們先來看看下面的這一段程序:
# 初始化一個 list 列表
datas = [1,3,4,10,5,3,7,6,9,8]
#使用 for 遍歷
for data in datas:
# 現在我們需要刪除偶數的元素
if data % 2 == 0:
# 刪除 datas 中的元素
datas.remove(data)
# 最后的 datas 列表
print('\n循環結束,最后的 datas 的元素為:')
print(datas)
我們來看看這段代碼的運行結果:
我們可以看出,4 跟 10 是相鄰著的,4 的下標是 2,10 的下標是 3,所以當 4 刪除之后,datas 中下標為 2 的元素就變成了 10,但是,此時的 for 循環中,datas 的下標是 3 了,所以取不了 10 這個元素,這才導致了 10 沒有被刪除。那我們要如何來刪除呢?小編的做法是這樣的:
'''
學習中遇到問題沒人解答?小編創建了一個Python學習交流群:
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
# 初始化一個 list 列表
datas = [1,3,4,10,5,3,7,6,9,8]
# 打印原數組元素,方便對比
print('原 datas 列表的元素為:')
print(datas)
# 定義一個空的 list 列表,來儲存要刪除的 datas 的元素
datas_del = []
#使用 for 遍歷
for data in datas:
# 現在我們需要刪除偶數的元素
if data % 2 == 0:
# 不直接刪除,將需要刪除的元素,存入 datas_del 中
datas_del.append(data)
# 打印 datas_del 列表,查看要刪除的元素
print('\n打印 datas_del 列表,查看要刪除的元素')
print(datas_del)
# 再執行一個 for 循環,遍歷 datas_del 列表
for data in datas_del:
# 刪除 datas 中的元素
datas.remove(data)
# 最后的 datas 列表
print('\n刪除后的 datas 的元素為:')
print(datas)
現在我們來執行以下上面的這段代碼,是否已經可以成功的刪除所要刪除的元素,我們看看結果:
從上面的結果可知,我們已經成功的將我們所需要的元素刪除了,這就是小編自己想到的方法。
文章名稱:python教程:一個 list 使用 for 遍歷,邊循環邊刪除的問題
鏈接地址:http://m.kartarina.com/article38/dsogisp.html
成都網站建設公司_創新互聯,為您提供網站維護、面包屑導航、網站排名、App設計、企業網站制作、外貿建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯