Python如何对嵌套列表进行内外双层升序排序?求列表推导式实现
Python嵌套列表的双层升序排序实现
要同时完成内层列表升序、外层列表升序的需求,完全可以用列表推导式结合内置排序方法实现,以下是具体方案:
分步实现(清晰直观)
abc = [[6, 2], [7, 1]] # 第一步:用列表推导式对每个子列表单独升序排序 sorted_sub_lists = [sorted(sub_list) for sub_list in abc] # 第二步:对处理后的外层列表按升序排序 final_result = sorted(sorted_sub_lists) print(final_result) # 输出:[[1, 7], [2, 6]]
一行紧凑写法
如果追求代码简洁,可以把两步合并成一行:
abc = [[6, 2], [7, 1]] final_result = sorted([sorted(sub) for sub in abc]) print(final_result) # 输出:[[1, 7], [2, 6]]
原代码问题说明
你之前使用的list(map(sorted, abc))仅完成了内层子列表的排序,没有对排序后的外层列表进行二次排序,因此得到的结果是[[2, 6], [1, 7]],不符合外层升序的要求。
自定义排序规则(可选)
如果需要按其他规则排序外层列表,比如按子列表的第二个元素排序,可以给sorted()传入key参数:
# 按子列表第二个元素升序排列 result = sorted([sorted(sub) for sub in abc], key=lambda x: x[1]) print(result) # 输出:[[2, 6], [1, 7]]
内容的提问来源于stack exchange,提问作者codedancer
相关产品推荐
相关产品推荐

