python中如何数组进行复合排序

python中如何数组进行复合排序

作者:Joshua Lee发布时间:2026-01-14阅读时长:0 分钟阅读次数:3

用户关注问题

Q
如何在Python中对数组进行多条件排序?

我想根据数组中的多个元素进行排序,比如先按照第一列排序,然后按照第二列排序,该怎么实现?

A

使用sorted函数配合键函数进行多条件排序

在Python中,可以使用sorted函数并通过关键字参数key指定一个函数,该函数返回一个元组,元组中的元素按优先顺序进行排序。比如 sorted(array, key=lambda x: (x[0], x[1])) 会先根据第一个元素排序,如果相同再根据第二个元素排序。

Q
使用NumPy数组时,如何对二维数组进行复合排序?

在使用NumPy时,有没有简便方法对二维数组按照多个列进行排序?

A

利用NumPy的lexsort函数实现多列排序

NumPy中可以使用lexsort函数对多列进行排序。lexsort以从最后一个关键字到第一个关键字逆序接受排序键,比如 np.lexsort((array[:,1], array[:,0])) 表示先按第0列排序,再按第1列排序,返回排序索引,可以通过该索引获取排序后的数组。

Q
Python中是否可以对列表进行原地多列排序?

我希望在不生成新数组的情况下,直接对原列表按照多个键进行排序,Python支持吗?

A

可以使用list对象的sort方法并传入自定义键函数

Python的list自带sort方法,可以实现原地排序。传入key参数,例如 key=lambda x: (x[0], x[1]) ,可以实现多条件排序。这样列表会直接被修改,无需额外内存开销。