Cha*_*eja 0 python sorting list
我想对这个列表进行排序 a = [31415926535897932384626433832795, 1, 3, 10, 3, 5]。为了减少时间复杂度,我想首先检查两个元素的长度是否相同。如果两者的长度不同,我将根据它们的长度交换它们,否则我将检查哪个数字更大并交换它们。我想使用.sort()具有名为key. 我可以使用,a.sort(key=len)但它仅适用于具有不同长度输入的测试用例。请帮我解决这个问题。
sort()在 Python中使用时,可以为其提供一个函数或匿名 ( lambda) 函数作为排序的基础。
在这种情况下,您可以使用lambda xwhere xare 中的元素a。
随后,在函数中提供一个元组作为返回结果允许sort优先排序,因此您需要的是:
a.sort(key=lambda x: (len(str(x)), x))
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,a先按len(str(x))然后按值排序x
编辑:添加说明