Python 3.x 使用lambda函数作为排序键
有人能解释一下这个代码是如何工作的吗。lambda函数中的isisnstance函数如何对列表进行排序Python 3.x 使用lambda函数作为排序键,python-3.x,lambda,Python 3.x,Lambda,有人能解释一下这个代码是如何工作的吗。lambda函数中的isisnstance函数如何对列表进行排序 def db_sort(arr): return sorted(arr, key=lambda x: (isinstance(x,str) ,x)) db_sort(['a', 'w', 'u', 'y', 6, 2, 3, 4, 5]) 输出: [2,3,4,5,6,'a','u','w','y'] lambda函数创建布尔值和原始值本身的元组。因此,sorted应用于以下输入:
def db_sort(arr):
return sorted(arr, key=lambda x: (isinstance(x,str) ,x))
db_sort(['a', 'w', 'u', 'y', 6, 2, 3, 4, 5])
输出:
[2,3,4,5,6,'a','u','w','y']
lambda函数创建布尔值和原始值本身的元组。因此,
sorted
应用于以下输入:
(True, 'a') (True, 'w') (True, 'u') (True, 'y') (False, 6) (False, 2) (False, 3) (False, 4) (False, 5)
它首先放置带有False
条目的条目,然后放置True
元素(本例中的字符串)。然后,它按照逻辑顺序对第二个元组条目之后的False
元素进行排序,并按照逻辑顺序对True
元素进行排序。可以将其视为一种分级排序
所以你最终得到了
(False, 6) (False, 2) (False, 3) (False, 4) (False, 5) (True, 'a') (True, 'w') (True, 'u') (True, 'y')
经过第一级排序和
(False, 2) (False, 3) (False, 4) (False, 5) (False, 6) (True, 'a') (True, 'u') (True, 'w') (True, 'y')
在第二级之后。这样,您就得到了数组的最终顺序(我想您意外地错过了6
)
[2, 3, 4, 5, 6, 'a', 'u', 'w', 'y']