当需要在 Python 中对多个迭代器进行操作时,chain()
函数就是一个非常方便的工具。其可将多个迭代器组合在一起,形成一个更大的迭代器,从而使你得以一次性操作所有元素,而不必手动合并它们。
下面是 chain()
函数的基本语法:
from itertools import chain
chain(iter1, iter2, ..., iterN)
其中,参数 iter1
到 iterN
表示需要组合的多个迭代器,可以是列表、元组、集合、字典等类型。返回的结果是一个迭代器,可用于遍历所有输入迭代器连结后的元素。
接下来提供两个示例说明 chain()
函数的具体使用方法。
示例一
假设有两个列表 list1
和 list2
,我们想将它们中的所有数值合并成一个新列表,并去除其中的重复元素。可以使用 chain()
函数配合集合 set()
完成这个任务。
from itertools import chain
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
merged_list = list(set(chain(list1, list2)))
print(merged_list)
上述程序输出的结果为 [1, 2, 3, 4, 5, 6]
,其中 chain(list1, list2)
将两个列表连结起来,形成一个界面相连的迭代器,接着通过 set()
函数去除其中的重复元素。最后用 list()
函数将集合转换成列表,得到最终的结果。
示例二
假设有多个长度不一致的序列,我们想要取出它们中所有的偶数元素。这时就可以使用 chain()
函数对这些序列进行迭代,再配合 filter()
函数筛选符合条件的元素。
from itertools import chain
seq1 = [1, 2, 3]
seq2 = [4, 5, 6, 7]
seq3 = [8, 9, 10, 11, 12, 13]
result = filter(lambda x: x % 2 == 0, chain(seq1, seq2, seq3))
print(list(result))
上述程序将多个序列 seq1
、seq2
、seq3
通过 chain(seq1, seq2, seq3)
进行连结,然后通过 filter()
函数配合 lambda
表达式筛选出其中的偶数元素,并最终通过 list()
函数转换成列表输出。程序输出的结果为 [2, 4, 6, 8, 10, 12]
。