python教程:一個 list 使用 for 遍歷,邊循環邊刪除的問題

今天由于要對一個 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。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設
主站蜘蛛池模板: 国产成人A亚洲精V品无码| 伊人久久精品无码二区麻豆| 亚洲中文字幕无码不卡电影 | 67194成l人在线观看线路无码| 国产精品无码2021在线观看| 精品人妻中文无码AV在线| 精品无码人妻一区二区三区不卡| 久久亚洲AV成人无码电影| 亚洲精品一级无码鲁丝片| 精品成在人线AV无码免费看| 精品国产毛片一区二区无码| 无码中文字幕av免费放| 无码人妻精品一区二区三18禁 | 亚洲真人无码永久在线| 色欲aⅴ亚洲情无码AV| 亚洲国产日产无码精品| 亚洲Av无码精品色午夜| 久久精品无码专区免费| 一本之道高清无码视频| 久久亚洲精品无码网站| 999久久久无码国产精品| 亚洲欧洲美洲无码精品VA| 人妻系列无码专区久久五月天| 欧洲无码一区二区三区在线观看| 八戒理论片午影院无码爱恋| 精品乱码一区内射人妻无码| 无码人妻一区二区三区兔费| 永久免费av无码网站韩国毛片| 国产亚洲精品a在线无码| 国产成人无码区免费内射一片色欲| 曰韩无码AV片免费播放不卡| 精品无码中出一区二区| 精品久久久无码中文字幕边打电话| 人妻少妇看A偷人无码电影| 日韩乱码人妻无码系列中文字幕| 无码视频一区二区三区在线观看| 亚洲国产精品无码久久久蜜芽| 熟妇人妻中文a∨无码| 精品久久久无码中文字幕天天| 无码少妇一区二区浪潮av| 日韩人妻无码免费视频一区二区三区|