Python中如何对嵌套列表的每个子列表进行升序排序?
如何对嵌套列表的每个子列表进行升序排序?
你需要对嵌套列表的每个子列表做升序排序,现有代码、当前输出与期望输出如下:
现有代码
J=[[10, 4, 7], [10, 4],[1,9,8]] for i in range(0,len(J)): J[0].sort()
当前输出
[[4, 7, 10], [10, 4], [1, 9, 8]]
期望输出
[[4, 7, 10], [4, 10], [1, 8, 9]]
问题原因
你的循环逻辑存在错误:循环过程中始终只对J[0](第一个子列表)执行排序操作,完全没有处理后续的子列表,因此只有第一个子列表是排好序的。
修改方案
方案1:修正循环索引
直接在循环中使用变量i作为子列表的索引,遍历所有子列表并执行排序:
J=[[10, 4, 7], [10, 4],[1,9,8]] for i in range(0,len(J)): J[i].sort()
方案2:直接遍历子列表(更简洁)
跳过索引,直接遍历嵌套列表中的每个子列表,对其执行排序:
J=[[10, 4, 7], [10, 4],[1,9,8]] for sublist in J: sublist.sort()
以上两种方式都会原地修改原列表J,执行后J就会变成你想要的期望输出。
方案3:生成新列表(不修改原列表)
如果不想改动原列表J,可以使用列表推导式结合sorted()函数生成一个新的排序后的列表:
J=[[10, 4, 7], [10, 4],[1,9,8]] sorted_J = [sorted(sublist) for sublist in J]
sorted()函数会返回一个新的排好序的子列表,不会对原列表J造成任何修改,最终sorted_J即为期望输出。
内容的提问来源于stack exchange,提问作者user19657580
相关产品推荐
相关产品推荐

