我有一个看起来像这样的列表:
a = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10']
Run Code Online (Sandbox Code Playgroud)
我需要一次循环遍历此列表中的一个元素,但是当到达列表的末尾时,需要反转循环.
例如,使用itertools.cycle:
from itertools import cycle
a_cycle = cycle(a)
for _ in range(30):
print a_cycle.next()
Run Code Online (Sandbox Code Playgroud)
我明白了:
01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10
Run Code Online (Sandbox Code Playgroud)
但我需要的是:
01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 10, 09, 08, 07, 06, 05, 04, 03, 02, 01, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10
Run Code Online (Sandbox Code Playgroud)
我需要循环a一段固定的次数,比如200.
Jon*_*nts 10
你可以cycle在chain你的a和,例如:reversed a
from itertools import cycle, islice, chain
a = range(1, 11)
b = reversed(a)
c = cycle(chain(a, b))
d = list(islice(c, 100)) # `c` is infinite - hence the `islice` to stop at some point...
Run Code Online (Sandbox Code Playgroud)
哪个给你:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
注意:如果a是可耗尽的迭代器,则需要先复制一份a.但是举个例子,这很好.