2017-05-24 24 views
2

我正在编写一个测试,需要将列表中的值插入外设前进,然后顺序向后循环而不会中断循环。这里是我需要修改结构:使用循环依次向上和向下计数

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

另一种选择是迭代时追加逆转列表:

for i, list_value in enumerate(exampleList + exampleList[::-1]): 
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