137 votes

Itération à travers des paires d'éléments dans une liste Python

Dupliquer possible :
itérer une liste comme paire (actuelle, suivante) dans Python

Est-il possible d'itérer une liste de la manière suivante dans Python (traitez ce code comme un pseudo-code) ?

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

Et il devrait produire

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

122voto

Jochen Ritzel Points 42916

À partir des recettesitertools :

from itertools import tee

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

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

62voto

SanSS Points 2834

Pour ce faire, vous devez faire :

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

18voto

Gabe Points 49718

Presque mot à mot à partir d'itération sur 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

8voto

ghostdog74 Points 86060
>>> 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X