📜  遍历Python中的列表

📅  最后修改于: 2022-05-13 01:55:08.635000             🧑  作者: Mango

遍历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'] 才能修改元素。