Перебирать пары элементов в списке Python [дубликаты]

  

Возможные дубликаты:
Итерировать список как пару (текущий, следующий) в Python
Итерации по двум элементам в списке

Можно ли в Python повторять список следующим образом (трактовать этот код как псевдокод)?

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

И это должно произвести

[5, 7]
[7, 11]
[11, 4]
[4, 5]
77 голосов | спросил mrvn 23 PMpSat, 23 Apr 2011 18:35:09 +040035Saturday 2011, 18:35:09

5 ответов


0

Из рецептов itertools :

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):
    ...
ответил Jochen Ritzel 23 PMpSat, 23 Apr 2011 18:38:45 +040038Saturday 2011, 18:38:45
0

Можно использовать zip функция:

a = [5, 7, 11, 4, 5]
for v, w in zip(a[:-1], a[1:]):
    print [v, w]
ответил hluk 23 PMpSat, 23 Apr 2011 19:05:51 +040005Saturday 2011, 19:05:51
0

Для этого вы должны сделать:

a =  [5, 7, 11, 4, 5]
for i in range(len(a)-1):
    print [a[i], a[i+1]]
ответил Santiago Alessandri 23 PMpSat, 23 Apr 2011 18:40:29 +040040Saturday 2011, 18:40:29
0

Почти дословно от Итерировать пары в списке (круговая мода) в Python :

def pairs(seq):
    i = iter(seq)
    prev = next(i)
    for item in i:
        yield prev, item
        prev = item
ответил Gabe 23 PMpSat, 23 Apr 2011 18:38:43 +040038Saturday 2011, 18:38:43
0
>>> 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
ответил ghostdog74 23 PMpSat, 23 Apr 2011 18:45:49 +040045Saturday 2011, 18:45:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132