如何遍历列表直到它到达最后一个元素,然后向后遍历它直到它到达第一个元素,然后重复?

时间:2018-06-05 13:48:20

标签: python list

如何遍历列表直到它到达最后一个元素,然后向后遍历它直到它到达第一个元素,然后重复?

在其他病房中,如何在一个跳出第一个和最后一个元素的模式中专门遍历一个列表?

e.g For a list of length=3
time=1, index=0
time=2, index=1
time=3, index=2
time=4, index=1
time=5, index=0
time=6, index=1
time=7, index=2

3 个答案:

答案 0 :(得分:3)

如果你实际上从一个列表开始,你可以使用切片并反转一次反弹它:

def bounce(a_list):
    yield from a_list
    yield from reversed(a_list[1:-1])

for x in bounce([1, 2, 3, 4]):
    print(x)

重复充气,增加乐趣。

for x in itertools.cycle(bounce([0, 1, 2])):
    print(x)

答案 1 :(得分:2)

使用itertools.cycle的一种方式:

from itertools import cycle

lst = [0, 1, 2]
res1 = cycle(lst + lst[-2:0:-1])


In [143]: [next(q.res1) for _ in range(10)]
Out[143]: [0, 1, 2, 1, 0, 1, 2, 1, 0, 1]

感谢@Chris_Rands指出列表理解可以很好地替换为list(itertools.islice(res1, 10))

答案 2 :(得分:0)

我还发现索引也可以使用

计算
index = (time-1)%(2*length-2)