使用循环顺序向上和向下计数

时间:2017-05-24 23:21:20

标签: python python-2.7

我正在编写一个测试,需要将列表中的值插入外设,然后按顺序向后插入,而不会破坏循环。这是我需要修改的结构:

exampleList = [5 10 60 9 3]

for i, listValue in enumerate(exampleList):
    self.log += 'Status: iteration {0}, sending {1}\n'.format(i, listValue)
    self.device.writeToPeripheral(listValue)
    ...

我试图将[5 10 60 9 3 3 9 60 10 5](单个或额外的中间值并不重要)写入外部设备。更改列表内容会使环境中其他位置的关键对象陷入混乱,以进行不同的测试。在python中是否有一种创造性的方法来构造循环以迭代上升列表,然后立即退回?我可以简单地将它放在一个函数中并在第一次调用后反转列表,但如果可能的话我想避免这种方法。

2 个答案:

答案 0 :(得分:1)

一种方法是使用itertools.chain(),如:

<强>代码:

import itertools as it

exampleList = [5, 10, 60, 9, 3]
forward_back = it.chain(exampleList, reversed(exampleList))

for i, list_value in enumerate(forward_back):
    print i, list_value

<强>结果:

0 5
1 10
2 60
3 9
4 3
5 3
6 9
7 60
8 10
9 5

答案 1 :(得分:0)

另一种选择是在迭代时追加反向列表:

for i, list_value in enumerate(exampleList + exampleList[::-1]):