web-dev-qa-db-ja.com

Pythonリスト内のアイテムのペアを反復処理する

可能な重複:
Pythonでペア(現在、次)としてリストを繰り返す
リスト内の2つの要素ごとに繰り返す

Python(このコードを擬似コードとして扱う)で次の方法でリストを反復することは可能ですか?

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

そしてそれは生成するはずです

[5, 7]
[7, 11]
[11, 4]
[4, 5]
79
mrvn

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):
    ...
80
Jochen Ritzel

Zip 関数を使用できます。

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

そのためには、次のことを行う必要があります。

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

からほぼ逐語的にPythonのリスト(循環形式)でペアを反復処理します

def pairs(seq):
    i = iter(seq)
    prev = next(i)
    for item in i:
        yield prev, item
        prev = item
12
Gabe
>>> 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
ghostdog74