python初学者:'打印mystr.split(',')。排序(反向=真)'

时间:2015-08-28 02:48:07

标签: python

我尝试从字符串中对数字序列进行排序:

在python解释器中:

    >>> mystr = '1,2,3,4,5'
    >>> a = mystr.split(',')
    >>> a
    ['1', '2', '3', '4', '5']
    >>> a.sort(reverse=True)
    >>> a
    ['5', '4', '3', '2', '1']

但是当我想缩短代码时,会出现问题:

    >>> mystr
    '1,2,3,4,5'
    >>> print mystr.split(',').sort(reverse=True)
    None

为什么会这样?希望得到你的帮助!

3 个答案:

答案 0 :(得分:6)

sort()没有返回新列表,而是对调用该函数的列表进行排序

更准确地说,sort()会对列表进行就地排序

>>> a = mystr.split(',')
>>> a.sort(reverse=True) # Nothing is returned at this line
>>> a # But the list is sorted
['5', '4', '3', '2', '1']

如果要返回排序列表,请改用<{3}}函数

>>> sorted(mystr.split(','), reverse=True)
['5', '4', '3', '2', '1']

旁注: sort vs sorted可以详细讨论就地排序算法的效率。由于sort函数不会创建新列表,因此它的内存效率将高于sorted。此外sort将能够处理更大的列表。

答案 1 :(得分:0)

要按照您的意愿将它链接在一起,您可以这样做:

mystr = '1,2,3,4,5'
print list(reversed(mystr.split(',')))

答案 2 :(得分:0)

正如其他人所提到的,sorted()vs sort()返回一个列表而不是就地修改,这里是一个读取它的链接:

https://wiki.python.org/moin/HowTo/Sorting

print sorted(mystr.split(','), reverse=True)