多次迭代列表

时间:2018-04-25 10:56:05

标签: python loops iteration

我想多次遍历列表。例如:

mylist = [10,2,58]

for i in iterate_multiple_times(mylist, 3):
    print(i)

应打印:

10
2
58
10
2
58
10
2
58

列表很长,我不想为缩进/样式目的创建嵌套的for循环。

有没有比以下更好的解决方案(例如从辅助存储的角度来看)?

from itertools import chain, repeat

for i in chain.from_iterable(repeat(mylist, 3)):
    print(i)

3 个答案:

答案 0 :(得分:2)

您可以在生成器表达式中使用嵌套的for循环:

>>> mylist = [10, 2, 58]
>>> for i in (x for _ in range(3) for x in mylist):
...     print(i)

答案 1 :(得分:-1)

不,你所拥有的一切都和它一样好。 repeatchain.from_iterable都是懒惰的,您不会创建整个列表的副本。您可能希望将其提取到 多次使用时的单独功能

请参阅Itertools Recipes

def ncycles(iterable, n):
    "Returns the sequence elements n times"
    from itertools import chain, repeat
    return chain.from_iterable(repeat(iterable, n)) 
    # the general recipe wraps iterable in tuple()
    # to ensure you can walk it multiple times
    # here we know it is always a list

mylist = [10,2,58]

for i in ncycles(mylist, 3):
    print(i)

答案 2 :(得分:-3)

除了使用isCustomerX原语之外,您可以将列表相乘:

itertools

或者创建自己的程序:

for i in mylist * 3: print(i)

在标准的libs / builtins中并不多,我很害怕。