在Python中从不同点开始迭代同一个列表

问题描述 投票:0回答:3

我想从两个不同的起点迭代同一个列表。 我可以这样做:

for LayerIndex in range(len( layers ) - 1):
    thisLayer = layers[LayerIndex     ]
    nextLayer = layers[LayerIndex + 1 ]

但我确信它应该有一种更Pythonic的方式来做到这一点。

python iterator iteration iterable
3个回答
0
投票

作为一个选项,您可以从该列表的枚举中提取列表的索引:

for index, elem in enumerate(layers):        
    if(index<(len(layers)-1)):    
        thiseLayer= elem        
        nexteLayer= layers[index+1]

这里额外的

if
只是检查下一个元素是否确实存在。

我不确定这是否更“Pythonic”


0
投票

是的,你可以这样做,但不要忘记第二个变量(nextLayer)不能超过列表/元组的长度。


0
投票

如果层是连续的,可以使用itertools.pairwise

import itertools
for thisLayer, nextLayer in itertools.pairwise(layers):
    ...
© www.soinside.com 2019 - 2024. All rights reserved.