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.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']

【讨论】:

以上是关于python:当它是数字列表时对字符串列表进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python中未按数字排序的元组列表

在 jQuery Mobile 中单击按钮时对列表视图进行排序

如何对字符串列表进行数字排序?

C#将数字插入到排序位置的列表框中

Python:根据属性对对象列表进行排序

python中的排序列表