2017-08-06 22 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 
相关问题