我正在编写一个测试,需要将列表中的值插入外设,然后按顺序向后插入,而不会破坏循环。这是我需要修改的结构:
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中是否有一种创造性的方法来构造循环以迭代上升列表,然后立即退回?我可以简单地将它放在一个函数中并在第一次调用后反转列表,但如果可能的话我想避免这种方法。
答案 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]):