-7

例:

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

計算

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

3 に答える 3

3

最初の要素を残りで減算したい場合は、

Result = [abs(Nums[0] - item) for item in Nums[1:]]
于 2013-06-10T05:58:01.097 に答える
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]
于 2013-06-10T05:57:56.717 に答える
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]
于 2013-06-10T05:58:20.007 に答える