python-3.x 如何高效地使用zip在多个列表中并行迭代

mnemlml8  于 2022-12-15  发布在  Python
关注(0)|答案(3)|浏览(115)

在使用ZIP函数的时候,有没有什么方法可以为不存在的并行元素提供一些默认值,并且仍然打印整个元素?
例如,对于下面的代码6fromlist a会丢失,但我不希望发生这种情况

a = [1,2,4,6]
b = [[1,3],[4,7],[6,1]]
for a,(b,c) in zip(a,b):
  print(a,b,c)
biswetbf

biswetbf1#

可以使用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)

这将打印以下输出:
在此示例中,zip_longest函数为输入iterables中缺少的元素添加值0。默认情况下,zip_longest函数将添加None值。您可以通过在fillvalue参数中指定填充值来更改该值。

yduiuuwa

yduiuuwa2#

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)
6fe3ivhb

6fe3ivhb3#

from itertools import zip_longest

x = [1,2,4,6]
y = [[1,3],[4,7],[6,1]]
for x,(y,z) in zip_longest(x,y, fillvalue=("NaN1", "NaN2")):

   print(x,y,z)

相关问题