如何迭代两个列表并回收第二个列表直到第一个列表结束

Leo*_*Leo 5 loops list python-3.x

基本上我有这两个列表

listone = ['a', 'b', 'c', 'd', 'e', 'f', 'j']
listtwo = ['1', '2', '3']
Run Code Online (Sandbox Code Playgroud)

我想同步迭代两个列表,并且每当最短列表结束时(在本例中为 listtwo)再次重新启动,直到 listone 完成。例子:

a 1
b 2
c 3
d 1
e 2
f 3
j 1
Run Code Online (Sandbox Code Playgroud)

像这样。

rus*_*ro1 8

您可以使用itertools.cycle

from itertools import cycle

for i, j in zip(listone, cycle(listtwo)):
    print(i, j)
Run Code Online (Sandbox Code Playgroud)

输出:

a 1
b 2
c 3
d 1
e 2
f 3
j 1
Run Code Online (Sandbox Code Playgroud)


Aji*_*ero 5

没有itertools.cycle()或创建辅助列表:

listone = ['a', 'b', 'c', 'd', 'e', 'f', 'j']
listtwo = ['1', '2', '3']
N = len(listtwo)

for index, elem in enumerate(listone):
    elem2 = listtwo[index % N]
    print(elem, elem2)
Run Code Online (Sandbox Code Playgroud)