python中提供了一些迭代(遍历)工具。下面将一一做介绍。
一、并行迭代
python中可以同时迭代两个序列。
a = ['aaa','bbb','ccc']
b = [100,200,300]
for i in range(len(a)):
print(a[i],b[i])
打印的结果如下
aaa 100
bbb 200
ccc 300
上述示例中for循环使用了i变量,作为索引的变量。使用for循环时,遍历i重复执行,遍历两个列表中的元素。
(一)使用zip函数
zip函数用于将可迭代的对象(如列表、元组、字符串等)作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象。
zip函数的返回值是一个适合迭代的对象,可以使用list将其转换成列表。
a = ['aaa','bbb','ccc']
b = [100,200,300]
c = zip(a,b)
c
<zip object at 0x00000221C3547B40>
list(c)
[('aaa', 100), ('bbb', 200), ('ccc', 300)]
示例中有两个序列,使用zip函数把两个列表打包成一个元组,可以看到zip返回了一个zip对象,使用list将其转换成列表。可以看到最终结果,两个列表中元素打包成一个个的元组。
zip函数可以打包任意数量的序列,但是当序列长度不同时,zip将在最短的序列打包后结束。
a = ['aaa', 'bbb', 'ccc']
b = [100,200,300,400]
zip(a,b)
<zip object at 0x00000221C3547AC0>
list(zip(a,b))
[('aaa', 100), ('bbb', 200), ('ccc', 300)]
a、b两个列表,a中3个元素,b中有4个元素,使用zip函数,组成的元组只用了3个元素,没有使用列表b中的元素400。
二、迭代时获取索引
使用emnuerate函数,可以获取序列的索引和值。
a = ['aaa', 'bbb','ccc']
enumerate(a)
<enumerate object at 0x000001E8D103B510>
for index, number in enumerate(a):
print(index, number)
循环后的结果
0 aaa
1 bbb
2 ccc
循环时使用enumerate,返回了列表a的索引和对应的值。