Пример:Список Python: Различная между элементами одного и того же списка
Nums = [5,17,21,29]
Result = [12,16,24]
расчета
absolute(5-17) = 12
absolute(5-21)
abs(5-24)
Пример:Список Python: Различная между элементами одного и того же списка
Nums = [5,17,21,29]
Result = [12,16,24]
расчета
absolute(5-17) = 12
absolute(5-21)
abs(5-24)
Если вы хотите вычесть первый элемент с остальными,
Result = [abs(Nums[0] - item) for item in Nums[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]
Если вы работаете только на первый элемент, то вы можете использовать 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]
+1 Я бы сделал это, если список был огромен, чтобы избежать мелкой копии – jamylak
В чем вопрос? – mishik