【问题标题】:python: sort list of strings when it's a list of numbers [duplicate]python:当它是数字列表时对字符串列表进行排序[重复]
【发布时间】:2019-05-07 14:00:54
【问题描述】:

这里是 python 解释器的新手。

为什么我无法对这个字符串列表进行排序?

>>> list = ['296098', '12805', '10445635', '11679960']
>>> print list.sort()
None
>>> print list.sort(key=float)
None

为什么 python 不能为我排序这个字符串列表?

【问题讨论】:

  • list.sort() 对列表进行就地排序——但它是一个函数,它不返回列表。 the official documentation 中提到了它——总是一个检查的好地方,我必须补充。
  • 顺便说一句,你不应该使用list作为变量名。
  • 另一个要检查的地方是谷歌搜索:“为什么 list.sort() 返回无”

标签: python list sorting


【解决方案1】:

首先list.sort()就地操作列表,也就是说当你调用它的时候,列表已经排好序了,默认返回值为None

list = ['296098', '12805', '10445635', '11679960']
list.sort()
list
Out[4]: ['10445635', '11679960', '12805', '296098']

其次,上面是按字符串值排序,要按数值排序,可以使用key=int。请记住,您可以将 int 替换为任何自定义方法:

list.sort(key=int)
list
Out[6]: ['12805', '296098', '10445635', '11679960']

最后但同样重要的是,您不应该使用 list 作为变量名,因为它已经是内置函数名。

【讨论】:

    【解决方案2】:

    list.sortlist 进行就地排序。一些 Python 程序员更喜欢sorted,它会返回一个排序后的list,而保持最初的list 不变

    In [2]: l=['296098', '12805', '10445635', '11679960']
    
    In [3]: sorted(l, key=float)
    Out[3]: ['12805', '296098', '10445635', '11679960']
    
    In [4]: l.sort(key=float)
    
    In [5]: l
    Out[5]: ['12805', '296098', '10445635', '11679960']
    

    【讨论】:

      【解决方案3】:

      list.sort() 在原地改变列表,而不是返回新列表。

      >>> list = ['296098', '12805', '10445635', '11679960']
      >>> list.sort()
      >>> list
      ['10445635', '11679960', '12805', '296098']
      

      【讨论】:

        猜你喜欢
        • 2018-07-19
        • 2012-07-22
        • 1970-01-01
        • 2018-10-12
        • 2016-05-10
        • 1970-01-01
        • 2016-12-25
        • 2020-07-22
        相关资源
        最近更新 更多