遍歷Python中的列表
阿新 • • 發佈:2020-10-25
List等效於其他語言中的陣列,其額外的好處是可以動態調整大小。在Python中,列表是資料結構中的一種容器,用於同時儲存多個數據。與Sets不同,Python中的列表是有序的,並且具有確定的計數。
有多種方法可以迭代Python中的列表。讓我們看看在Python中迭代列表的所有不同方法,以及它們之間的效能比較。
方法1:使用For迴圈
# Python3 code to iterate over a list list = [1, 3, 5, 7, 9] # Using for loop for i in list: print(i)
1個3 5 7 9
方法2:For迴圈和range()
如果我們要使用從數字x到數字y迭代的傳統for迴圈。
# Python3 code to iterate over a list list = [1, 3, 5, 7, 9] # getting length of list length = len(list) # Iterating the index # same as 'for i in range(len(list))' for i in range(length): print(list[i])
1個 3 5 7 9
如果我們可以對元素進行迭代,則不建議對索引進行迭代(如方法1中所述)。
方法3:使用while迴圈
# Python3 code to iterate over a list list = [1, 3, 5, 7, 9] # Getting length of list length = len(list) i = 0 # Iterating using while loop while i < length: print(list[i]) i += 1
1個 3 5 7 9
方法4:使用列表理解(可能是最具體的方法)。
# Python3 code to iterate over a list list= [1, 3, 5, 7, 9] # Using list comprehension [print(i) for i in list]
1個 3 5 7 9
方法5:使用enumerate()
如果我們想將列表轉換為可迭代的元組列表(或基於條件檢查獲得索引,例如線上性搜尋中,可能需要儲存最小元素的索引),則可以使用enumerate()函式。
# Python3 code to iterate over a list list = [1, 3, 5, 7, 9] # Using enumerate() for i, val in enumerate(list): print (i, ",",val)
0,1 1、3 2、5 3、7 4、9
注意:甚至方法2都可以用來查詢索引,但是方法1不能(除非每次迭代都增加一個額外的變數),方法5給出了這種索引的簡明表示。
方法#6:使用numpy
對於非常大的n維列表(例如影象陣列),有時最好使用外部庫(例如numpy)。
# Python program for # iterating over array import numpy as geek # creating an array using # arrange method a = geek.arange(9) # shape array with 3 rows # and 4 columns a = a.reshape(3, 3) # iterating an array for x in geek.nditer(a): print(x)
0 1個 2 3 4 5 6 7 8
我們可以np.ndenumerate()
用來模仿列舉的行為。numpy的強大功能來自於我們甚至可以控制訪問元素的方式(Fortran順序而不是C順序,例如:)),但一個警告是np.nditer
預設情況下將陣列視為只讀,因此一個人必須傳遞額外的標誌,例如op_flags=[‘readwrite’]
它才能修改元素