2013-10-05 37 views
0

列表我有這份名單排序在python

[1,-5,10,6,3,-4,-9] 

但現在我想要列表進行排序是這樣的:

[10,-9,6,-5,-4,3,1] 

正如你可以看到我想從高分到低分排序不管每個號碼有什麼標誌,但保持標誌,是否清楚?

+1

Upvotes for what what? –

+0

我假設這是家庭作業,所以你將不得不建立自己的排序功能。完成之後,只需根據每個數字的絕對值進行比較。 –

回答

27

使用abs作爲關鍵sorted功能或list.sort

>>> lis = [1,-5,10,6,3,-4,-9] 
>>> sorted(lis, key=abs, reverse=True) 
[10, -9, 6, -5, -4, 3, 1] 
+0

只是完美和簡單,就是我一直在尋找的!謝謝你,兄弟! –

6

使用:

l.sort(key= abs, reverse = True) 

列表可以使用sort()方法進行排序。排序方法有一個名爲key的參數,可以傳遞一個函數。使用這個參數,你的列表將不會按列表的值排序,而是按列表中的函數值排序。

就你而言,你應該使用abs()函數,它將返回列表元素的絕對值。所以,你的列表

>>> l = [1,-5,10,6,3,-4,-9] 

進行排序,就像是

>>> [abs(1),abs(-5),abs(10),abs(6),abs(3),abs(-4),abs(-9)] 

這應該是:

>>> [1 ,-4 ,-5 ,6 ,-9 ,10] 

從最大到smalles訂購,使用反向= True參數也。