Itérer sur des paires d'éléments dans une liste Python [dupliquer]

duplicata possibles:

itérer une liste en tant que paire (courant, suivant) en Python

itération de tous les deux éléments d'une liste

est-il possible d'itérer une liste de la manière suivante en Python (traiter ce code comme un pseudocode)?

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]
76
demandé sur Community 2011-04-23 18:35:09

5 réponses

From itertools receives:

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
répondu Jochen Ritzel 2011-04-23 15:24:45

vous pouvez utiliser la zip fonction:

a = [5, 7, 11, 4, 5]
for v, w in zip(a[:-1], a[1:]):
    print [v, w]
83
répondu hluk 2015-04-06 19:51:05

Pour faire ce que vous devez faire:

a =  [5, 7, 11, 4, 5]
for i in range(len(a)-1):
    print [a[i], a[i+1]]
54
répondu Santiago Alessandri 2018-04-09 19:37:58

presque mot à mot de itérer sur des paires dans une liste (de façon circulaire) en Python :

def pairs(seq):
    i = iter(seq)
    prev = next(i)
    for item in i:
        yield prev, item
        prev = item
9
répondu Gabe 2017-09-15 12:00:29
>>> 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
répondu ghostdog74 2011-04-23 14:45:49