美文网首页Python专题
Python列表排序

Python列表排序

作者: 右哼哼丨左哼哼 | 来源:发表于2018-01-24 14:51 被阅读10次

    列表正序排序

    sort()排序方法

    此函数方法对列表内容进行正向排序,排序后的新列表会覆盖原列表(id不变),也就是sort排序方法是直接修改原列表list排序方法。

    >>> a = [5,7,6,3,4,1,2]
    >>> a.sort()
    >>> a
    [1, 2, 3, 4, 5, 6, 7]
    

    许多python初学者,对sort()方法比较糊涂。有的时候会需要一个排序好的列表,而又想保存原有未排序列表,他们会这么操作:

    >>> a = [5,7,6,3,4,1,2]
    >>> b = a.sort()
    >>> print b
    None
    

    这个时候问题出现了,变量b得到的是一个空值。那么想要得到排序好的列表,又想保留原列表怎么办呢?列表sorted()方法可以帮你实现。

    sorted()方法

    即可以保留原列表,又能得到已经排序好的列表sorted()操作方法如下:

    >>> a = [5,7,6,3,4,1,2]
    >>> b = sorted(a)
    >>> a
    [5, 7, 6, 3, 4, 1, 2]
    >>> b
    [1, 2, 3, 4, 5, 6, 7]
    

    sorted()方法可以用在任何数据类型的序列中,返回的总是一个列表形式:

    >>> sorted("www.baidu.com")
    ['.', '.', 'a', 'b', 'c', 'd', 'i', 'm', 'o', 'u', 'w', 'w', 'w']
    

    列表反向/倒序排序

    列表反向排序

    方式一:List reverse()方法
    reverse() 函数用于反向列表中元素。

    >>> a=[1,5,3,7]
    >>> a.reverse()
    >>> a
    [7, 3, 5, 1]
    

    此方法对原列表进行了修改

    方式二:使用reversed()函数

    >>> a=[1,5,3,7]
    >>> b=list(reversed(a)) 
    >>> b
    [7, 3, 5, 1]
    

    注意:reversed()函数返回的是一个迭代器,而不是一个List,需要再使用List函数转换一下。
    此方法不对原列表进行修改
    方式三: 使用分片

    >>> a=[1,5,3,7]
    >>> c=a[::-1]
    >>> c
    [7, 3, 5, 1]
    

    注意:其中[::-1]代表从后向前取值,每次步进值为1
    大家可以测试d=a[:-1]和e=a[::-2]

    列表倒序排序

    方法一:使用sort()和reverse()

    >>> a
    [1, 5, 3, 7]
    >>> a.sort()
    >>> a
    [1, 3, 5, 7]
    >>> a.reverse()
    >>> a
    [7, 5, 3, 1]
    

    此方法对原列表进行了修改
    方法二:使用sorted()和reverse参数

    >>> a=[1,5,3,7]
    >>> b=sorted(a,reverse=True)
    >>> b
    [7, 5, 3, 1]
    

    推荐使用此方法倒序排序

    按指定条件排序

    如这个列表,要求按照分数的大小,从高到低排序

    >>> student=[('john', 'A', 10),('jane', 'B', 15),('dave', 'B', 12)]
    >>> sorted(student,key=lambda student:student[2],reverse=True)
    [('jane', 'B', 15), ('dave', 'B', 12), ('john', 'A', 10)]
    

    相关文章

      网友评论

        本文标题:Python列表排序

        本文链接:https://www.haomeiwen.com/subject/zsjuaxtx.html