欢迎光临散文网 会员登陆 & 注册

Python 如何对数组按照多个条件排序

2023-07-19 00:39 作者:Mr蓝珲  | 我要投稿

小提示:用 sorted() 函数以及 lambda 表达式。


对一个简单的数组,比如 lst = [1, 3, 2],进行排序,调用 sorted() 函数的方法比较直观。直接用 sorted(lst) 即可,然后取其返回值即可。 如果需要逆序排列,添加 reverse=True 这个参数就可以。 顺序排列,则不需要加 reverse=True,或者把 reverse=True 改为 reverse=False。

排序一个简单的数组


对一个由 tuple (元组) 组成的数组,如果只是按照每个 tuple 中的第一个元素进行排序,则直接按照简单数组来处理即可。 sorted() 函数会将每个 tuple 按照 tuple 中的第一个元素进行排序。如果要修改默认行为,则可以使用 lambda 表达式。 lambda 表达式的好处是, 可以设置成先按某个元素进行排序, 然后再按另外一个元素排序。这样就比较灵活了。 实际使用中,这种场景是比较常见的。比如下面的例子中, 我们看到 sorted() 的参数中有 key=lambda x: (x[0], x[1], x[2]) -- lambda 是个关键字, x 是个元组, (x[0], x[1], x[2]) 意味着先按照元组中的第一个元素,再按照元组中的第二个元素, 最后按照元组中的第三个元素排序。 调换各个元素的位置,就改变了排序的优先级行为。

排序由元组组成的数组


同样,对一个由 dataclass 对象组成的数组,也可以按照类似的思路进行排序。只不过,这时我们用点号(比如 x.price ), 而不是用方括号( x[1] ),来表示某个元素了。


排序由 dataclass 对象组成的数组


Python 如何对数组按照多个条件排序的评论 (共 条)

分享到微博请遵守国家法律