Python列表:同一列表的元素之间的差异

时间:2013-06-10 05:56:07

标签: python list

示例:

Nums = [5,17,21,29]
Result = [12,16,24]

计算

absolute(5-17) = 12
absolute(5-21) 
abs(5-24)

3 个答案:

答案 0 :(得分:3)

如果你想用剩下的元素减去第一个元素,

Result = [abs(Nums[0] - item) for item in Nums[1:]]

答案 1 :(得分:1)

>>> Nums = [5,17,21,29]
>>> [abs(Nums[0] - x) for x in Nums[1:]]
[12, 16, 24]

如果您使用的是非常大的列表,则可以使用[1:]来避免浅层复制itertools.islice(尽管这几乎不需要)

>>> from itertools import islice
>>> [abs(Nums[0] - x) for x in islice(Nums, 1, None)]
[12, 16, 24]

答案 2 :(得分:1)

如果你只是在第一个项目上工作,那么你可以使用iter()创建一个迭代器,这将比@ karthikr / @jamylak的版本更高效,并且对于大型列表来说可能更快:

>>> lis = [5,17,21,29]
>>> it = iter(lis)
>>> item = next(it)
>>> [abs(item - x) for x in it]
[12, 16, 24]

另一个适用于任何索引的解决方案,不仅仅是第0个:

>>> n = 0
>>> [abs(lis[n] - x) for i,x in enumerate(lis) if i != n]
[12, 16, 24]
>>> n = 1
>>> [abs(lis[n] - x) for i,x in enumerate(lis) if i != n]
[12, 4, 12]