经过仔细考虑之后,我认为这是最好的方法。它使您无需使用即可轻松过渡到中间
break,我认为这很重要,而且所需的计算量最少,因此我认为这是最快的。它也不需要
li是列表或元组。它可以是任何迭代器。
from itertools import cycleli = [0, 1, 2, 3]running = Truelicycle = cycle(li)# Prime the pumpnextelem = next(licycle)while running: thiselem, nextelem = nextelem, next(licycle)
我将其他解决方案留给后代。
所有这些花哨的迭代器内容都有其位置,但不在这里。使用%运算符。
li = [0, 1, 2, 3]running = Truewhile running: for idx, elem in enumerate(li): thiselem = elem nextelem = li[(idx + 1) % len(li)]
现在,如果您打算无限循环浏览列表,则只需执行以下 *** 作:
li = [0, 1, 2, 3]running = Trueidx = 0while running: thiselem = li[idx] idx = (idx + 1) % len(li) nextelem = li[idx]
我认为,这比涉及的其他解决方案更容易理解
tee,而且也可能更快。如果您确定列表不会更改大小,则可以松开副本
len(li)并使用它。
这也使您可以轻松地从中间踩下摩天轮,而不必等待铲斗再次下降到底部。其他解决方案(包括您的解决方案)要求您
running在
for循环的中间进行检查,然后再进行检查
break。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)