日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python在for循环中不能删除正在循环的列表(问题已解决)

發(fā)布時(shí)間:2024/4/18 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python在for循环中不能删除正在循环的列表(问题已解决) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如,本意是刪除列表中的33元素,但是由于兩個(gè)元素位置相近,在找到第一個(gè)33的時(shí)候,刪除后,元素就自動(dòng)向前補(bǔ)齊,此時(shí)i已經(jīng)后移,所以在使用remove刪除相鄰元素的時(shí)候會(huì):刪除一個(gè)元素,漏掉一個(gè)元素:

下面用C++模擬:

#include<iostream> using namespace std; struct list{int a[7];int length; }; int main(void){struct list l;l.a[0] = 11;l.a[1] = 22;l.a[2] = 33;l.a[3] = 33;l.a[4] = 44;l.a[5] = 55;l.a[6]=66;l.length = 7;for(int i=0;i<l.length;i++){if(l.a[i]==33){for(int j=i;j<l.length;j++){l.a[j] = l.a[j+1];}l.length -= 1;}}//printfor(int i=0;i<l.length;i++){cout<<l.a[i]<<endl; ? //結(jié)果:11 22 33 44 55 66?}return 0; }


?在C++中,我們不會(huì)出這個(gè)問題,因?yàn)镃++中不是python中的自動(dòng)填充,需要我們自己處理接下來的元素,在C++中,應(yīng)對(duì)這種情況可以采用在刪除后i--,后退一個(gè)位置,再繼續(xù)判斷。

但是在Python中是自動(dòng)填充,而且不是C++中的for循環(huán)中方便得到每個(gè)此時(shí)遍歷元素的下標(biāo),所以這種方式在Python中是不太合適的。這里我們可以考慮再定義一個(gè)列表,用遍歷一個(gè)列表,刪除另一個(gè)列表(即:不操作正在遍歷的列表)解決。

C++中的下標(biāo)回退,這里給出部分截圖:

總結(jié)

以上是生活随笔為你收集整理的python在for循环中不能删除正在循环的列表(问题已解决)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。