遍历Python中的列表
List 相当于其他语言中的数组,具有动态大小的额外好处。在Python中,列表是数据结构中的一种容器,用于同时存储多个数据。与 Set 不同, Python中的列表是有序的并且有明确的计数。
在Python中有多种方法可以遍历列表。让我们看看在Python中迭代列表的所有不同方法,以及它们之间的性能比较。
方法 #1:使用 For 循环
Python3
# Python3 code to iterate over a list
list = [1, 3, 5, 7, 9]
# Using for loop
for i in list:
print(i)
Python3
# 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])
Python3
# 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
Python3
# Python3 code to iterate over a list
list = [1, 3, 5, 7, 9]
# Using list comprehension
[print(i) for i in list]
Python3
# Python3 code to iterate over a list
list = [1, 3, 5, 7, 9]
# Using enumerate()
for i, val in enumerate(list):
print (i, ",",val)
Python3
# 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)
输出:
1
3
5
7
9
方法 #2: for 循环和 range()
如果我们想使用从数字 x 迭代到数字 y 的传统 for 循环。
Python3
# 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
# 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
# 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
# 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。
Python3
# 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'] 才能修改元素。