详解Python 迭代器链

  • Post category:Python

Python 中可以使用迭代器来操作序列中的元素。迭代器是一个访问集合内元素的对象,不需要从序列的最开始元素开始遍历,也不需要事先确定序列的长度。迭代器工作时是惰性的,只有当需要获取值时,才会向序列请求数据。

迭代器链是指对多个迭代器进行串行连接,获得一个更为复杂的迭代器。下面是迭代器链的使用方法。

迭代器链的连接运算符

为了像连接列表一样连接两个迭代器,Python 提供了连接运算符 + 。下面是连接两个字符串的示例:

flavor_list = ['vanilla', 'chocolate', 'pecan', 'strawberry']
for flavor in flavor_list:
    print(flavor)

s = 'abc'
t = [1, 2, 3]
for item in s + t:
    print(item)

输出结果为:

vanilla
chocolate
pecan
strawberry
a
b
c
1
2
3

可以看到,连接后的迭代器 s + t 包含了原来的两个迭代器中所有的元素,可以被遍历输出。

使用 itertools.chain() 进行链式连接

除了运算符 + 以外,Python 还提供了 itertools.chain() 函数,用于将多个迭代器连接起来,形成一个更复杂的迭代器。下面是使用 itertools.chain() 函数的示例:

import itertools

flavor_list = ['vanilla', 'chocolate', 'pecan', 'strawberry']
for flavor in flavor_list:
    print(flavor)

s = 'abc'
t = [1, 2, 3]
for item in itertools.chain(s, t):
    print(item)

输出结果与前面的示例相同:

vanilla
chocolate
pecan
strawberry
a
b
c
1
2
3

可以看到,通过 itertools.chain() 函数,我们可以将多个元素类型不同的迭代器连接在一起,形成一个更为复杂的迭代器,然后进行遍历或其他操作。