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的索引和对应的值。