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)]

但是我的代码没有我想要的那么高效。map 和 lambda 能达到结果吗?

我想避免导入模块(当然,如果 lambda 和 map 无法实现这一点)

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 回答