python:当它是数字列表时对字符串列表进行排序[重复]
Posted
技术标签:
【中文标题】python:当它是数字列表时对字符串列表进行排序[重复]【英文标题】:python: sort list of strings when it's a list of numbers [duplicate] 【发布时间】: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() 返回无”
【参考方案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.sort
对list
进行就地排序。一些 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']
【讨论】:
以上是关于python:当它是数字列表时对字符串列表进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章