Doublons possibles:
Itérer une liste en tant que paire (actuelle, suivante) en Python
En parcourant tous les deux éléments d'une liste
Est-il possible d'itérer une liste de la manière suivante dans Python (traite ce code comme un pseudocode)?
a = [5, 7, 11, 4, 5]
for v, w in a:
print [v, w]
Et cela devrait produire
[5, 7]
[7, 11]
[11, 4]
[4, 5]
De itertools recettes:
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):
...
Vous pouvez utiliser la fonction Zip
:
a = [5, 7, 11, 4, 5]
for v, w in Zip(a[:-1], a[1:]):
print [v, w]
Pour faire cela, vous devriez faire:
a = [5, 7, 11, 4, 5]
for i in range(len(a)-1):
print [a[i], a[i+1]]
Presque textuellement de Itérer sur les paires dans une liste (mode circulaire) en Python :
def pairs(seq):
i = iter(seq)
prev = next(i)
for item in i:
yield prev, item
prev = item
>>> 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