2017-06-19 130 views
0

這裏的第一個數字的基礎上名單是我想排序元素

lis = [55,57,7,48,73,5] 

按降序排列第1位的基礎上,整理後

lis = [73,7,57,55,5,48] 

這是我試過但它只能按遞減順序返回完整號碼

lis.sort(reverse=True) 
lis = [73,57,55,48,7,5] 
+2

[sorted()只能按第一位排序](https://stackoverflow.com/questions/14591435/sorted-only-sorting-by-first-digit)可能的重複 – victor

+0

@VictorC。我沒有使用文件,我的元素是整數。此外,我正在尋找一種pythonic方法來快速完成此操作,而不是提取每個數字的第一位數字並執行操作。 –

+1

https://stackoverflow.com/questions/36949481/sort-list-of-ints-by-the-first-digit-of-each-int 我下面的答案基本上是從我在上面鏈接的答案中複製評論,但只更改變量名稱。重要的部分答案應該回答你的問題。實際上,這是按第一位數字排序列表的最快方法。 – victor

回答

1

我將修改我鏈接的問題中的答案,因爲解決方案涉及從文件中讀取(儘管答案非常相似)。 sort()函數接受一個名爲key的參數,該參數指示排序列表時使用的函數。

lis.sort(key=lambda x: int(str(x)[0])) 

在上面的函數,int(str(x)[0])每個元素轉換成字符串,需要的第一個字符(這將是第一數位),並將其轉換回一個整數。然後,Python根據第一個數字對數字進行排序。

+0

非常感謝!這解決了我的問題:) –