【发布时间】:2021-03-18 18:21:15
【问题描述】:
在我的 Python 3 脚本中,我试图根据输入组合来自三个不同列表的三个数字。如果列表大小相同,则zip 没有问题。但是,我希望能够为特定列表输入一个数字,并且脚本可以重复该数字,直到最长的列表完成。这可以通过zip_longest 完成。但是,对于 fillvalue,无法为单独的列表设置单独的填充值。
以这个简单的脚本为例:
from itertools import zip_longest
list1=[1]
list2=[4, 5, 6, 7, 8, 9]
list3=[2]
for l1, l2, l3 in zip_longest(list1, list2, list3):
print(l1, l2, l3)
这是实际结果:
# 1 4 2
# None 5 None
# None 6 None
# None 7 None
# None 8 None
# None 9 None
这将是我想要的结果:
# 1 4 2
# 1 5 2
# 1 6 2
# 1 7 2
# 1 8 2
# 1 9 2
我已经设法通过手动创建不同的 for 循环并询问列表是否为常量来完成此特定任务,但是 zip_longest 与我所需要的非常接近,以至于我想知道我是否遗漏了一些明显的东西。
【问题讨论】:
-
这能回答你的问题吗? Using zip_longest on unequal lists but avoiding the returned None。不过,那里的问题和答案应该更新到 Python 3。
标签: python python-3.x list iterator