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

Python:一维与多维列表排序差异及报错原因咨询

为什么一维列表遍历排序报错,多维列表却正常?

嗨,这个问题其实很好理解,咱们一步步拆解来看~

首先得搞清楚sorted()函数的核心要求:它必须接收一个可迭代对象(比如列表、字符串、元组这类能逐个取出元素的结构),作用是把这个对象里的元素排序后返回新列表。

先看多维列表的情况

你的多维列表代码是这样的:

multilist = [[0,3,-1,9],[4,2,77,55],[22,-11]]
for i in multilist:
    print(sorted(i))

这里的i在每次循环中拿到的是子列表(比如[0,3,-1,9]),子列表本身就是可迭代对象,所以sorted(i)能正常工作——它会把这个子列表里的元素排序后输出,这就是多维列表代码能跑通的原因。

再看一维列表的问题

你的一维列表代码:

singlelist = [0,-44,21]
for i in singlelist:
    print(sorted(i))

这里的i每次循环拿到的是单个数字(比如0、-44、21),而数字是不可迭代类型——sorted()没法从一个单独的数字里取出元素来排序,所以会直接抛出TypeError: 'int' object is not iterable的错误。

正确的一维列表排序方式

如果你想给整个一维列表排序,根本不需要遍历元素,直接给sorted()传入整个列表就行:

singlelist = [0,-44,21]
print(sorted(singlelist))  # 输出:[-44, 0, 21]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:29:10