Python如何在另一个列表内容中重复列表的元素,直到满足第二个列表的长度?

Ali*_*dri 0 python list repeat python-2.7

如何重复另一个列表内容中的列表元素,直到满足第二个列表的长度?例如:

LA = [0,1,2]
LB = [(0,0),(1,0),(2,0),(3,0),(4,0),(5,0),(6,0)]
the end result should be:
LC = [(0,0,0),(1,0,1),(2,0,2),(3,0,0),(4,0,1),(5,0,2),(6,0,0)]
Run Code Online (Sandbox Code Playgroud)

希望它可以在一行中完成

Mos*_*oye 8

你可以使用itertools.cycle:

from itertools import cycle

LA = [0,1,2]
LB = [(0,0),(1,0),(2,0),(3,0),(4,0),(5,0),(6,0)]

LC = [(i, j, k) for (i, j), k in zip(LB, cycle(LA))]
print LC
# [(0, 0, 0), (1, 0, 1), (2, 0, 2), (3, 0, 0), (4, 0, 1), (5, 0, 2), (6, 0, 0)]
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为zip生成项目直到其中一个iterables耗尽...但是一个cycle对象是无穷无尽的,所以我们将保持填充项目LA直到LB用完为止.