在不知道内部列表的数量的情况下迭代列表列表

时间:2014-08-09 16:02:30

标签: python list zip itertools

我有一份清单清单:

x = [[1,2,3], [4,2], [5,4,1]]

我想按顺序遍历内部列表中的元素并获取:

1 4 5
2 2 4
3 None 1

我试过这个但是我无法得到最后一行:

>>> x = [[1,2,3], [4,2], [5,4,1]]
>>> a, b, c = x
>>> for i,j,k in zip(a,b,c):
...     print i,j,k
... 
1 4 5
2 2 4

鉴于我不知道有多少内部列表,我如何才能达到预期效果?

2 个答案:

答案 0 :(得分:6)

您可以使用itertools.izip_longest填充较短的子列表:

for t in izip_longest(*x):
    print t

请注意使用*xt来处理未知数量的子列表。

答案 1 :(得分:1)

from itertools import izip_longest
x = [[1,2,3], [4,2], [5,4,1]]
for i in izip_longest(*x):
    print i

(1, 4, 5)
(2, 2, 4)
(3, None, 1)