如何在sort函数仅支持普通列表的场景下实现嵌套列表子列表排序
嵌套列表逐子列表排序实现
Python内置的sort()方法仅支持对单层普通列表做原地排序,要实现嵌套列表内部每个子列表的升序排列,只需要逐一对每个子列表单独执行排序逻辑即可。
示例适配实现
给定的初始嵌套列表定义:
lst = [[123,3,12],[89,14,2],[901,4,67]]
方案1:原地修改模式(直接使用sort方法)
循环遍历外层列表的每个子元素,拿到子列表后直接调用原生sort方法完成升序排序:
for sub in lst: sub.sort()
外层列表存储的是每个子列表的内存引用,对拿到的子列表做原地修改时,外层列表内的对应元素会自动同步更新,不需要额外回写操作。执行完成后,lst的输出结果和预期完全匹配:
[[3,12,123],[2,14,89],[4,67,901]]
方案2:非侵入模式(不修改原始数据)
如果需要保留原列表的初始内容,可以结合列表推导式,用sorted()为每个子列表生成独立的排序后新对象,组装成新的嵌套列表:
new_lst = [sorted(sub) for sub in lst]
这种方式运行后,原列表lst的内容不会发生任何变动,new_lst是完全独立的排序后结果,输出效果和原地排序的模式一致。
避坑提醒
- 不要直接对外层列表调用
lst.sort():这个操作会按照每个子列表的第一个元素做整体排序,不会调整子列表内部的元素顺序,完全不符合需求。
内容的提问来源于stack exchange,提问作者NIk
相关产品推荐
相关产品推荐

