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

如何按元组第二个元素升序排序元组列表,现有代码报错如何解决

按元组第二个元素排序的问题解决

报错原因

你代码里的Lnew.remove(Lnew[i][1])是错误根源:

  • Lnew的元素是由原元组转换来的列表(比如[2,5]、[1,2]这类结构)
  • Lnew[i][1]是数值类型(比如第一个循环里取到的是5),你尝试在元素全为列表的Lnew里删除一个数值,肯定找不到对应元素,所以抛出list.remove(x): x not in list错误。

另外你的代码还存在其他逻辑问题:

  • 嵌套循环逻辑混乱,反复排序、修改元素值的操作完全没必要
  • 你把列表转回元组的操作tuple(elt)没有赋值保存,等于没执行
  • 最后返回的是未修改的原列表L,就算前面逻辑正确也拿不到结果

最简实现方案

Python内置的sorted()函数和列表自带的sort()方法都支持自定义key参数指定排序依据,直接用这个特性一行就能搞定需求:

def sorting(L):
    # key指定按每个元组的索引为1的元素(也就是第二个元素)排序
    return sorted(L, key=lambda x: x[1])

测试效果:

sample = [(2, 5), (1, 2), (4, 4), (2, 3), (2, 1)]
print(sorting(sample)) 
# 输出:[(2, 1), (1, 2), (2, 3), (4, 4), (2, 5)]

如果你不想生成新列表,要直接修改原列表,可以用列表的sort方法:

def sorting(L):
    L.sort(key=lambda x: x[1])
    return L

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:36:05