Pregunta Iterar a través de pares de elementos en una lista de Python [duplicar]


Posibles duplicados:
Iterar una lista como par (actual, siguiente) en Python
Iteración de cada dos elementos en una lista 

¿Es posible iterar una lista de la siguiente manera en Python (trate este código como pseudocódigo)?

a = [5, 7, 11, 4, 5]
for v, w in a:
    print [v, w]

Y debería producir

[5, 7]
[7, 11]
[11, 4]
[4, 5]

74
2018-04-23 14:35


origen


Respuestas:


De itertools recetas:

from itertools import tee, izip
def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)

for v, w in pairwise(a):
    ...

77
2018-04-23 14:38



Puedes usar el zip función:

a = [5, 7, 11, 4, 5]
for v, w in zip(a[:-1], a[1:]):
    print [v, w]

79
2018-04-23 15:05



Para hacer eso debes hacer:

a =  [5, 7, 11, 4, 5]
for i in range(len(a)-1):
    print [a[i], a[i+1]]

50
2018-04-23 14:40



Casi textualmente de Iterar sobre pares en una lista (moda circular) en Python:

def pairs(seq):
    i = iter(seq)
    prev = next(i)
    for item in i:
        yield prev, item
        prev = item

8
2018-04-23 14:38



>>> a = [5, 7, 11, 4, 5]
>>> for n,k in enumerate(a[:-1]):
...     print a[n],a[n+1]
...
5 7
7 11
11 4
4 5

5
2018-04-23 14:45