【问题标题】:python How sort list in one line and return itpython如何在一行中对列表进行排序并返回
【发布时间】:2013-11-25 22:36:14
【问题描述】:

我有一个列表,我想对这个列表进行排序并在一行中从函数中返回它。

我尝试了 list1.sort() 的返回,但输出是 None 而不是 list1 排序的。

有没有办法对列表进行排序并在一行中返回?

【问题讨论】:

  • 有一个内置函数... sorted ...
  • 为什么因为没有表现出最低限度的理解而投票结束?问题陈述了使用的代码、实际返回值和预期返回值,并陈述了一个明确的问题。很明显,对这里的问题至少有一点了解。
  • 为什么要求是一行?当然,在这种情况下,这个要求很容易满足,但仍然……你在打代码高尔夫吗?
  • @WaleedKhan,但对列表进行排序和返回列表的排序版本之间存在细微差别

标签: python list sorting


【解决方案1】:

使用排序。

>>>x = ["c","b","1"]
>>>sorted(x)
["1","b","c"]

x.sort() 应该返回None,因为这就是sort 方法的工作原理。使用 x.sort() 会对 x 进行排序,但不会返回任何内容。

更多排序方式请看here

【讨论】:

  • 如果你想改进你的答案,你可以指出 OP why list1.sort() 应该按照正常的 python 约定返回 None
【解决方案2】:

通常你会说

sorted(list1)              # returns a new list that is a sorted version of list1

但有时你会因为其他事物正在引用该列表而处于原位

list1.sort() 返回无,所以你的选择是

list1[:] = sorted(list1)    # still makes a temporary list though

sorted(list1) or list1      # always ends up evaluating to list1 since None is Falsey

【讨论】:

    【解决方案3】:
    list1 = [6, 7, 4, 23, 10, 79]
    list2 = [list1.pop(list1.index(min(list1))) for i in range(len(list1))]
    print(list2)
    

    输出:

    [4, 6, 7, 10, 23, 79]
    

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 2018-09-16
      • 2013-10-12
      • 1970-01-01
      相关资源
      最近更新 更多