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
相关产品推荐
相关产品推荐

