python在for循环中不能删除正在循环的列表(问题已解决)
生活随笔
收集整理的這篇文章主要介紹了
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ const成员和引用成员
- 下一篇: python format用法