python在for循环中不能删除正在循环的列表(问题已解决)
生活随笔
收集整理的這篇文章主要介紹了
python在for循环中不能删除正在循环的列表(问题已解决)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如,本意是刪除列表中的33元素,但是由于兩個元素位置相近,在找到第一個33的時候,刪除后,元素就自動向前補齊,此時i已經后移,所以在使用remove刪除相鄰元素的時候會:刪除一個元素,漏掉一個元素:
下面用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; ? //結果:11 22 33 44 55 66?}return 0; }
?在C++中,我們不會出這個問題,因為C++中不是python中的自動填充,需要我們自己處理接下來的元素,在C++中,應對這種情況可以采用在刪除后i--,后退一個位置,再繼續判斷。
但是在Python中是自動填充,而且不是C++中的for循環中方便得到每個此時遍歷元素的下標,所以這種方式在Python中是不太合適的。這里我們可以考慮再定義一個列表,用遍歷一個列表,刪除另一個列表(即:不操作正在遍歷的列表)解決。
C++中的下標回退,這里給出部分截圖:
總結
以上是生活随笔為你收集整理的python在for循环中不能删除正在循环的列表(问题已解决)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ const成员和引用成员
- 下一篇: 删除副本列表中的消失项目符号