说我有以下三个列表:

aList = [1,2,3,4,5,6]
bList = ['a','b','c','d']
cList = [1,2]

我想使用zip遍历它们。

通过使用带有zip的循环,如下所示:
from itertools import cycle
for a,b,c in zip(aList, cycle(bList), cycle(cList)):
    print a,b,c

我得到的结果是:
1 a 1
2 b 2
3 c 1
4 d 2
5 a 1
6 b 2

虽然我希望我的结果像这样:
1 a 1
2 b 1
3 c 1
4 d 1
5 a 2
6 b 2

最佳答案

您可以使用itertools.repeat()在第二个列表的基础上重复第三个列表的项目:

>>> from itertools import repeat, chain
>>>
>>> zip(aList,cycle(bList), chain.from_iterable(zip(*repeat(cList, len(bList)))))
[(1, 'a', 1),
 (2, 'b', 1),
 (3, 'c', 1),
 (4, 'd', 1),
 (5, 'a', 2),
 (6, 'b', 2)]

关于python - 在Python中循环压缩多个列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38766596/

10-15 08:28