1

次の「 Pythonic」構文を使用して、インデックスを指定せずにPython(v.2.6)リストをループできます。

the_list = [2, 3, 5, 7, 11, 13]
for item in the_list:
    print item + 2

forしかし、2つの連続するインデックスに対して操作を実行する場合は、ループの範囲に対応する変更を加えて、インデックス番号を指定する必要があると思います。

the_list = [2, 3, 5, 7, 11, 13]
for i in xrange(len(the_list)-1):
    print the_list[i] + the_list[i+1]

あれは正しいですか?または、Pythonicを維持し、式の使用を回避する方法はありxrange(len(the_list)-1)ますか?

4

1 に答える 1

2

モジュールpairwiseのドキュメントに記載されているレシピが好きです。itertools

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

それで...

for x, x_next in pairwise(the_list):
    ...

zipまた、それ自体のスライスを含むリストだけを作成することもできます。

for x, x_next in zip(the_list, the_list[1:]):
    ...
于 2012-06-01T21:10:43.753 に答える