You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用含交换操作的for循环按子列表首元素对嵌套列表升序排序

用选择排序实现嵌套列表按首元素升序排列

嘿,我来帮你完善这个排序逻辑!你想要的其实是选择排序的实现思路——每次从未排序的部分里找到首元素最小的子列表,然后和当前位置的元素交换,一步步把列表排好序。

先给你补全并修正后的完整代码:

lst = [[5, 2], [4, 7], [3, 5]]

# 外层循环:遍历每个需要确定元素的位置
for i in range(len(lst)):
    # 先假设当前位置的子列表是未排序部分里首元素最小的
    smallest_idx = i
    # 内层循环:从当前位置的下一个元素开始,找首元素更小的子列表
    for j in range(i + 1, len(lst)):
        # 对比子列表的首元素,更新最小元素的索引
        if lst[j][0] < lst[smallest_idx][0]:
            smallest_idx = j
    # 交换当前位置和最小元素的位置,把最小元素放到当前位置
    lst[i], lst[smallest_idx] = lst[smallest_idx], lst[i]

print(lst)  # 输出结果: [[3, 5], [4, 7], [5, 2]]

代码细节解释

  • 外层循环从0开始而不是1:这样我们才能把整个列表里首元素最小的子列表放到第一个位置(索引0),这是选择排序的核心步骤。
  • smallest_idx的作用:记录未排序区域里首元素最小的子列表的索引,一开始默认是当前遍历的位置i。
  • 内层循环从i+1开始:因为i之前的元素已经是排好序的,不需要再对比。
  • 交换操作:Python里可以直接用a, b = b, a的方式快速交换两个元素的位置,不用额外的临时变量。

这样运行代码后,就能得到你想要的[[3,5],[4,7],[5,2]]啦!

内容的提问来源于stack exchange,提问作者clink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:09:33