【发布时间】:2022-12-06 20:45:15
【问题描述】:
有没有什么办法可以在使用 ZIP 函数时为不存在的并行元素提供一些默认值并仍然打印整个内容?
例如,对于下面的代码6个从列出一个错过了但我不想发生这种事
a = [1,2,4,6]
b = [[1,3],[4,7],[6,1]]
for a,(b,c) in zip(a,b):
print(a,b,c)
【问题讨论】:
标签: python arrays python-3.x list zip
有没有什么办法可以在使用 ZIP 函数时为不存在的并行元素提供一些默认值并仍然打印整个内容?
例如,对于下面的代码6个从列出一个错过了但我不想发生这种事
a = [1,2,4,6]
b = [[1,3],[4,7],[6,1]]
for a,(b,c) in zip(a,b):
print(a,b,c)
【问题讨论】:
标签: python arrays python-3.x list zip
itertools 中的 zip_longest 函数应该完全符合您的要求:
from itertools import zip_longest
a = [1,2,4,6]
b = [[1,3],[4,7],[6,1]]
for a,(b,c) in zip_longest(a,b, fillvalue=("NaN1", "NaN2")):
print(a,b,c)
【讨论】:
您可以使用 zip_longest 为代码中缺失的元素提供默认值:
from itertools import zip_longest
a = [1, 2, 4, 6]
b = [[1, 3], [4, 7], [6, 1]]
for a, (b, c) in zip_longest(a, b, fillvalue=(0, 0)):
print(a, b, c)
这将打印以下输出:
1 1 3
2 4 7
4 6 1
6 0 0
zip_longest 函数自动为输入iterables 中缺失的元素添加默认值 0。您可以通过在 fillvalue 参数中指定它来将默认值更改为您想要使用的任何其他值。
【讨论】: