在for迴圈遍歷列表的過程中不能刪除列表中的元素
在刷題的時候碰到一件很有意思的事,就是在Python中用迴圈遍歷列表中元素的時候,感覺還是按照下標進行訪問的,這時如果刪除掉了已經遍歷到的元素的時候,那麼刪除元素之後的列表的下標會重新排序,但是迴圈還是按照迴圈開始的時候列表的下標進行訪問的,這時會導致有些元素訪問不到的情況。具體見程式碼。
words = ["a", "b", "c", "d"]
flag = 1
for word in words:
print(word)
if flag == 1:
words.remove(word)
flag = 0
執行的結果
a
c
d
一開始的下標是[a,b,c,d]對應[0,1,2,3],刪除了a之後,[b,c,d]下標為[0,1,2],但是由於第二輪迴圈遍歷的下標是1,這時迴圈就訪問c,跳過了b。
相關推薦
在for迴圈遍歷列表的過程中不能刪除列表中的元素
在刷題的時候碰到一件很有意思的事,就是在Python中用迴圈遍歷列表中元素的時候,感覺還是按照下標進行訪問的,這時如果刪除掉了已經遍歷到的元素的時候,那麼刪除元素之後的列表的下標會重新排序,但是迴圈還是按照迴圈開始的時候列表的下標進行訪問的,這時會導致有些元素訪
在Python中,不用while和for迴圈遍歷列表
a = [1, 2, 3, 8, 9] def printlist(l, index): if index == len(l): return else: print(l[index]) printlist(l,
2.6 使用for迴圈遍歷檔案 2.7 使用while迴圈遍歷檔案 2.8 統計系統剩餘的記憶體 2.9 資料型別轉換計算(計算mac地址) 3.0 資料型別轉換(列表與字典相互轉換)
2.6 使用for迴圈遍歷檔案 open r:以只讀方式開啟 w: 以寫方式開啟 a: 以追加模式開啟 r+: 以讀寫模式開啟 w+: 以讀寫模式開啟(參見w) a+: 以讀寫模式開啟(參見a) rb: 以二進位制模式開啟 read 我們先寫一個檔案,叫1.txt 內容如下 111 22
shell中的for迴圈遍歷目錄
1 目錄結構說明 a. 檔名 convert_video_to_images.sh b. /User/document/list目錄下有A1目錄 c. A1目錄下有檔案v_Skiing_g01_c01.avi、v_Skiing_g01_c02.avi、v_Skijet
vue中通過v-for迴圈遍歷得到的值如何加到dom節點的屬性中以及vue將多選框選中的值渲染到頁面
話不多說直接上程式碼 <script> Vue.component('CheckBox',{ props:{ values:{ type:Array
v-for迴圈遍歷:vue-商品列表查詢資料分類顯示,json資料格式的解析
以餓了麼來舉例吧,我們要顯示下圖畫線框裡面的食物資訊,資料是遍歷json資料出來的, json資料在呢?結構是醬紫的數組裡面放了多個物件。物件裡面放了陣列的同時又放了若干物件,我們要實現上圖的效果(將套餐類,特色雞公煲套餐分類顯示),就要把foods這個數組裡面的nam
linux shell 中陣列的定義和for迴圈遍歷
linux shell中的語法和普通程式語言 c/c++ java 的不太一樣,平時用的不多,所以總是記不住,寫指令碼才會去查怎麼用。今天突然被問到陣列怎麼去遍歷。平時寫shell指令碼也經常遍歷陣列,但是一下沒答上來,被鄙視了。所以平時學習還是好好總結吧,不能每次都問度
Lua中,泛型for迴圈遍歷table時,ipairs和pairs的區別
為了看出兩者的區別,首先定義一個table: a={"Hello","World";a=1,b=2,z=3,x=10,y=20;"Good","Bye"}使用ipairs對其進行遍歷: for i, v in ipairs(a) do print(v) end輸出的結果是
【python學習筆記】for迴圈遍歷兩個列表失敗—— ValueError: too many values to unpack
for迴圈遍歷兩個列表失敗—— ValueError: too many values to unpack 問題來源: 我現在有兩個列表,一個是標題,一個是訪問量,我想在一個for迴圈中,獲取這兩個列表中同一位置的值,然後打印出來,記得好像之前看過
關於swift for 迴圈 遍歷陣列刪除元素的bug問題
最近做專案的時候,有個迴圈操作刪除陣列的元素剛開始是這麼寫的。 for (index, item) in list.enumerate() { ……// 如果裡邊有刪除操作,會有bug,不信你測測。一直顯示陣列越界 } for item in list {
java基礎學習總結(十八):切勿用普通for迴圈遍歷LinkedList
ArrayList與LinkedList的普通for迴圈遍歷 對於大部分Java程式設計師朋友們來說,可能平時使用得最多的List就是ArrayList,對於ArrayList的遍歷,一般用如下寫法: public static void main(String[] args) {
使用for迴圈遍歷字串時迴圈變數型別的坑
通常情況下,使用for迴圈可以通過遞增,也可以通過遞減,使用遞減遍歷程式碼如下: - (void)testFor { NSString *string = @"信不信由你"; for (int i = string.length - 1; i >= 0;
JAVA高階基礎(10)---TreeSet對自定義型別進行定製排序及增強for迴圈遍歷集合
TreeSet 自然排序 對於自定義型別,那麼要實現自然排序,需要去 Comparable 介面中的 compareTo 方法。在 compare To 方法中我們可以根據自己的業務要求,來實現自己的排序規則。 定製排序 在建立容器
小程式-for迴圈遍歷的使用
.js檔案: Page({ /** * 頁面的初始資料 */ data: { datas:[ { title: '提交申請', txt: '選擇服務型別,填寫基本資訊,提交' }, { title: '材料稽核', txt: '收到電網企業電話,與
for迴圈遍歷linux當前目錄的結構
for i in `ls`;do echo ">>>"$i ;ls $i;done [[email protected] cache]# for i in `ls`;do echo ">>>"$i ;ls $i
java 傳入list集合 返回樹形選單,for迴圈遍歷
public List<SysPermissionVO> getTreeMenu(List<SysPermissionVO> list,SysPermissionVO sysPermissionVO) { List parent = new ArrayList()
#C++11新特性 for迴圈遍歷容器#
#include<iostream> #include<string> using namespace std; string s = "hello"; for (auto &i : s ) i = toupper(i); //改
Shell for迴圈遍歷並動態注入引數到hive
假設你要執行一些資料,例如根據經銷商做統計,但是陣列有很多個,你懶得一個個執行,那麼應該怎麼辦? 某某經銷商->L0814 L2592 L0819 L4786 shell的for迴圈基礎語法 #常規遍歷 for i in 1 2 3 4 5
C# for迴圈遍歷字典裡面的所有元素
using System.Linq;//新增引用 using System; [ContextMenu("DebugTest")] public void MoviePlay() { Dictionary<string,
for迴圈遍歷陣列
js陣列隨機打亂輸出,直接上程式碼: <script> var arr = ["a","b","c"]; document.write("舊陣列:"+arr.join()); arr.sort(function() { return 0.5