📜  Python – Itertools.zip_longest()(1)

📅  最后修改于: 2023-12-03 14:46:07.035000             🧑  作者: Mango

Python – Itertools.zip_longest()

Python中的itertools模块提供了一系列用于迭代对象的工具,其中zip_longest()函数是其中一个非常有用的函数。这个函数可以接受任意数量的可迭代对象作为参数,然后将它们中的元素配对,生成一个新的迭代器。如果传入的可迭代对象中元素的数量不同,那么未匹配的元素会用指定的填充值来填充,如果没有指定填充值,那么默认值为None。

基本使用
from itertools import zip_longest

a = [1, 2, 3]
b = ['a', 'b']
c = zip_longest(a, b)

for i in c:
    print(i)
    
# output:
# (1, 'a')
# (2, 'b')
# (3, None)

在上面的例子中,我们将两个可迭代对象a和b传递给了zip_longest()函数,生成了一个新的迭代器c。我们可以看到,当a和b的长度不同时,最后一个元素会被None填充。

指定填充值
from itertools import zip_longest

a = [1, 2, 3]
b = ['a', 'b']
c = zip_longest(a, b, fillvalue='x')

for i in c:
    print(i)
    
# output:
# (1, 'a')
# (2, 'b')
# (3, 'x')

在上面的例子中,我们通过指定fillvalue参数,将未匹配的元素用'x'来填充。

使用*args传递可迭代对象
from itertools import zip_longest

a = [1, 2, 3]
b = ['a', 'b']
c = ['x', 'y', 'z']
d = zip_longest(*[a, b, c], fillvalue='unknown')

for i in d:
    print(i)
    
# output:
# (1, 'a', 'x')
# (2, 'b', 'y')
# (3, 'unknown', 'z')

在上面的例子中,我们使用了*args语法来将可迭代对象传递给zip_longest()函数,生成一个新的迭代器。同时也通过fillvalue参数在未匹配的元素之间插入了一个'unknown'。

zip_longest()函数是在操作可迭代对象时非常有用的工具之一,在处理一些不规则的数据结构时特别实用。