2017-08-06 50 views
3

這裏是我的代碼:Big Sorting:如何使用帶鍵的lambda排序長度相同的字符串?

def SortingBigIntegers(arr): 
    arr.sort(key = lambda x: (len(x), x)) 

arr = ["54", "724523015759812365462", 
     "870112101220845", "8723","6","9","3"] 

SortingBigIntegers(arr) 

print " ".join(arr) 

如何相同長度的字符串在這種代碼排序?

+0

首先上的長度,則字典順序。 –

+2

爲什麼你甚至需要這個,只要Python整數可以任意大? – ForceBru

回答

3

key的是:

lambda x: (len(x), x) 

因此,這意味着它被轉換爲一個元組。元組首先按第一個元素排序,然後由第二個元素排序。因此,如果兩個字符串的長度爲的長度爲相等,則它將按字符串對字符串進行排序。字符串按Python排序按字典順序排列。如果字符串是整數(沒有小數點,並且沒有前導零等)並且這些具有相同的長度,則它們按照我們將它們排序的那樣排序數字

在情況下的值仍然是相同上兩個標準,順序將是一樣的原始順序:在Python排序是穩定

也就是說,在,int s可以處理任意大小。所以你不必使用字符串,你可以簡單地使用int s。

+0

除用零填充的整數失敗外,f.e. '['01','90','9']' - >'['9','01','90']'。此外,Python2中的「long」與Python3中的「int」相當。 – randomir

+0

@randomir:謝謝。這確實是我沒有考慮到的情況。 –

1

在功能SortingBigIntegers(arr, n)中,您已使用n,但您只能通過arr。所以,你應該避免這個n

然後,按照這個過程:

def SortingBigIntegers(arr): 
    arr.sort(key=lambda x: (len(x), x)) 


arr = ["54", "724523015759812365462","870112101220845", "8723", "6", "9", "3"] 

SortingBigIntegers(arr) 

print(" ".join(arr)) 

輸出:

3 6 9 54 8723 870112101220845 724523015759812365462 
相關問題