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

Python整数列表排序时报错TypeError: int object is not subscriptable求助

Python整数列表排序时报错TypeError: int object is not subscriptable求助

嗨,我来帮你排查这个问题~

首先,咱们先拆解报错的原因:你写的koko(a)函数里,当执行a.sort(key=koko)时,koko会接收列表里的每一个整数元素作为参数a(比如第一个元素是0),而你试图用a[1]去访问这个整数的下标——但整数是单个值,根本没有下标可以访问,所以才会抛出TypeError: 'int' object is not subscriptable的错误。另外,return a:a[1]本身也是语法错误,Python里没有这种写法哦。

再看你的需求:输入0 1 1 3 2 5 2后,想要得到拼接结果1012235,也就是排序后的列表是[1, 0, 1, 2, 2, 3, 5]。看起来你是想让最小的非零元素排在第一位,接着放0,剩下的元素再按从小到大排序。

那我们可以换一种思路实现,不用错误的key函数,而是拆分列表后重新组合:

n = int(input("Enter number of elements : "))
a = list(map(int, input("\nEnter the numbers : ").strip().split()))[:n]

# 拆分列表为非零元素和零元素,分别处理
non_zero = sorted([x for x in a if x != 0])
zeros = [x for x in a if x == 0]

# 按需求组合:第一个非零元素 + 所有零 + 剩下的非零元素
if non_zero:
    sorted_list = [non_zero[0]] + zeros + non_zero[1:]
else:
    # 如果全是零,直接返回原排序结果
    sorted_list = zeros

print('Sorted list:', sorted_list)
print('Result:', ''.join(map(str, sorted_list)))

当你输入0 1 1 3 2 5 2时,这段代码会输出:

Sorted list: [1, 0, 1, 2, 2, 3, 5]
Result: 1012235

完全符合你想要的结果~

如果你还有其他自定义排序的需求,也可以告诉我,咱们再调整逻辑!

备注:内容来源于stack exchange,提问作者Newbieee_TwT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 07:53:15