要匹配您自己的输出,您可以使用
izip_longest填充“无”并再次转置以返回原始顺序:
from itertools import izip_longest
tup=( [1,2], [2,3,5], [4,3], [4,5,6,7] )
for a,b,c,d in zip(*izip_longest(*tup)):
print(a,b,c,d)
(1, 2, None, None)
(2, 3, 5, None)
(4, 3, None, None)
(4, 5, 6, 7)
如果int,float等会更好,那么你可以为izip_longest函数指定一个不同的fillvalue参数:
tup=( [1,2], [2,3,5], [4,3], [4,5,6,7])
for a,b,c,d in zip(*izip_longest(*tup,fillvalue=0)):
print(a,b,c,d)
(1, 2, 0, 0)
(2, 3, 5, 0)
(4, 3, 0, 0)
(4, 5, 6, 7)
根据你的print语句来判断你可能会使用python2但是对于任何使用python3作为@TimHenigan commented below的人来说都是zip_longest.
如果您不需要列表,可以使用itertools.izip返回迭代器:
from itertools import izip_longest, izip
tup = ( [1, 2], [2, 3, 5], [4, 3], [4, 5, 6, 7])
for a, b, c, d in izip(*izip_longest(*tup, fillvalue=0)):
print(a, b, c, d)