0

重複の可能性:
リストまたはタプルのペアワイズトラバーサル

私はこのリストを持っています:[(0, 'set'), (1, 'of'), (4, 'coloured'),(5, 'eels')]

item + 1[0]-item[0]を効率的に反復して達成したい

1-0、4-1、5-4のように

私は現在持っています:

search_list = [(0, 'set'), (1, 'of'), (4, 'coloured')] 
[search_list[i+1][0]-search_list[i][0] for i in range(0,len(search_list)-1)]

しかし、私のコードは私が望むほど効率的ではありません。マップとラムダは結果を達成できますか?

モジュールのインポートは避けたいです(もちろん、ラムダとマップがこれを達成できない場合はそうします)

4

1 に答える 1

0

効率的かどうかはわかりません:

>>> search_list = [(0, 'set'), (1, 'of'), (4, 'coloured'),(5, 'eels')]
>>> [y[0]-x[0] for x,y in zip(search_list,search_list[1:])]
[1, 3, 1]

itertools一般的な需要によるバージョン:

>>> from itertools import izip, islice
>>> search_list = [(0, 'set'), (1, 'of'), (4, 'coloured'),(5, 'eels')]
>>> [y[0]-x[0] for x,y in izip(search_list, islice(search_list, 1, None))]
[1, 3, 1]
于 2012-04-04T13:22:32.550 に答える