1. 程式人生 > 實用技巧 >遍歷Python中的列表

遍歷Python中的列表

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’]它才能修改元素