如何遍历两个列表并回收第二个列表,直到第一个列表结束

时间:2020-02-08 12:22:57

标签: python-3.x list loops

基本上我有这两个列表

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

我想同步遍历两个列表,并且只要最短的列表结束(在这种情况下为listtwo)就会重新启动,直到listone完成。 示例:

a 1
b 2
c 3
d 1
e 2
f 3
j 1

喜欢这个。

4 个答案:

答案 0 :(得分:8)

您可以使用itertools.cycle

from itertools import cycle

for i, j in zip(listone, cycle(listtwo)):
    print(i, j)

输出:

a 1
b 2
c 3
d 1
e 2
f 3
j 1

答案 1 :(得分: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)

答案 2 :(得分:1)

ng

答案 3 :(得分:0)

附加到已接受的答案,

如果列表长度未知。

from itertools import cycle

A = [1,2,3,4,5,6,7,8,9]
B = ["A","B","C"]

zip_list = list(zip(A, cycle(B)) if len(A) > len(B) else zip(cycle(A), B))

for i, j in zip_list :
    print(i, j) 
1 A
2 B
3 C
4 A
5 B
6 C
7 A
8 B
9 C

[Program finished]