Python chain()组合多个迭代器

  • Post category:Python

当需要在 Python 中对多个迭代器进行操作时,chain() 函数就是一个非常方便的工具。其可将多个迭代器组合在一起,形成一个更大的迭代器,从而使你得以一次性操作所有元素,而不必手动合并它们。

下面是 chain() 函数的基本语法:

from itertools import chain

chain(iter1, iter2, ..., iterN)

其中,参数 iter1iterN 表示需要组合的多个迭代器,可以是列表、元组、集合、字典等类型。返回的结果是一个迭代器,可用于遍历所有输入迭代器连结后的元素。

接下来提供两个示例说明 chain() 函数的具体使用方法。

示例一

假设有两个列表 list1list2,我们想将它们中的所有数值合并成一个新列表,并去除其中的重复元素。可以使用 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))

上述程序将多个序列 seq1seq2seq3 通过 chain(seq1, seq2, seq3) 进行连结,然后通过 filter() 函数配合 lambda 表达式筛选出其中的偶数元素,并最终通过 list() 函数转换成列表输出。程序输出的结果为 [2, 4, 6, 8, 10, 12]