【问题标题】:why lista.sort() + listb.sort() doesn't work in python? [duplicate]为什么 lista.sort() + listb.sort() 在 python 中不起作用? [复制]
【发布时间】:2013-02-03 13:42:28
【问题描述】:

我在 python 中尝试了这段代码,它运行良好:

listX.sort()
list1.sort()

result = listX + list1

但以下代码不起作用:

result = listX.sort() + list1.sort()

它给了我这个错误信息:

TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

我该如何解决这个问题?谢谢!

【问题讨论】:

  • 除了作为一个副本之外,Python 常见问题解答中也回答了这个问题(甚至解释了 为什么 Python 是这样设计的)。

标签: python list sorting


【解决方案1】:

因为list.sort 方法对列表进行就地操作,返回None。相比之下,sorted 是一个内置函数,它返回 已排序的输出。

result = sorted(listX) + sorted(list1)

这会做你想要的。

【讨论】:

  • 我注意到我基本上重复了你的答案,所以我在维基上找到了我的答案。 +1
  • 这对我来说意义不大,但是……好吧! :D
  • 嗯,是的,现在我想起来了......它没有。哦,好吧。
【解决方案2】:

这是因为list.sort() 返回None,所以你实际上是在做:

None + None

这甚至没有意义。

如果你想连接两个列表的排序元素,你可以这样做:

listA.sort()
listB.sort()
listC = listA + listB

或者,(推荐):

listC = sorted(listA) + sorted(listB)

正如sorted() 确实返回一个值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    相关资源
    最近更新 更多