可能重复:
pairwise traversal of a list or tuple
我有一个列表:[(0, 'set'), (1, 'of'), (4, 'coloured'),(5, 'eels')]
我希望高效地迭代并实现item+1 - item。
如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)]
但是我的代码没有我想要的那么高效。地图和lambda能达到这个结果吗?
我希望避免导入模块(但是,如果lambda和map不能实现这一点,当然会这样做)
发布于 2012-04-04 13:22:32
我不确定是否有效率:
>>> 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]
https://stackoverflow.com/questions/10011891
复制相似问题