• sort与sorted的区别


    转发博客 :https://www.cnblogs.com/clement-jiao/p/9095699.html

    我们需要对List进行排序,Python提供了两个方法对给定的List L进行排序 :方法1.用对List的成员函数sort进行排序;方法2.用内置函数sorted进行排序(从2.4开始)

    sorted() 函数对所有可迭代的对象进行排序操作
    sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数
    原型:sort(key,reverse=False)
    key:用来指定一个函数,此函数在每次元素比较时被调用,此函数代表排序的规则,也就是你按照什么规则对你的序列进行排序;
    reverse:是用来表明是否逆序,默认的False情况下是按照升序的规则进行排序的,当reverse=True时,便会按照降序进行排序。
    注;一般来说,cmp和key可以使用lambda表达式


    sort()与 sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。
    sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
    list 的 sort 方法返回的是对已经存在的列表进行操作,
    而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
    sort修改原有的内容,sorted不修改原有的内容

    >>> a=[1,2,5,3,9,4,6,8,7,0,12]
    >>> a.sort()
    >>> a
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
    
    >>> a=[1,2,5,3,9,4,6,8,7,0,12]
    >>> sorted(a)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
    >>> a
    [1, 2, 5, 3, 9, 4, 6, 8, 7, 0, 12]
    

    区别:
    对于一个无序的列表a,调用a.sort(),对a进行排序后返回a,sort()函数修改待排序的列表内容。
    而对于同样一个无序的列表a,调用sorted(a),对a进行排序后返回一个新的列表,而对a不产生影响

    假设用元组保存每一个学生的信息,包括学号,姓名,年龄。用列表保存所有学生的信息。

    >>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
    >>> list1.sort()
    >>> list1
    [(2, 'Mike', 22), (5, 'Lucy', 19), (8, 'Logan', 20)]
    
    >>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
    >>> sorted(list1)
    [(2, 'Mike', 22), (5, 'Lucy', 19), (8, 'Logan', 20)]
    >>> list1
    [(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
    

    小结:
    由示例可以看出,当列表由list(或者tuple)组成时,默认情况下,sort和sorted都会根据list[0](或者tuple[0])作为排序的key,进行排序。
    以上都是默认的排序方式,我们可以编写代码控制两个函数的排序行为。主要有三种方式:基于key函数;基于cmp函数和基于reverse函数

    基于key函数排序

    >>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
    >>> list1.sort(key=lambda x:x[2])
    >>> list1
    [(5, 'Lucy', 19), (8, 'Logan', 20), (2, 'Mike', 22)]
    
    >>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
    >>> sorted(list1, key=lambda x:x[2])
    [(5, 'Lucy', 19), (8, 'Logan', 20), (2, 'Mike', 22)]
    >>> list1
    [(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
    

    基于reverse函数

    >>> a=[1,2,5,3,9,4,6,8,7,0,12]
    >>> a.sort(reverse=False)
    >>> a
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
    
    >>> a=[1,2,5,3,9,4,6,8,7,0,12]
    >>> a.sort(reverse=True)
    >>> a
    [12, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
    >>> a.sort(reverse=True)
    小结:reverse=False为升序排序(默认);reverse=True为降序排序
    

      

     

      

      

  • 相关阅读:
    Docker 容器知识点
    Docker 常用命令
    杜教筛
    后缀自动机相关
    期望DP
    从零开始的莫比乌斯反演(函数)[详细推导]
    欧拉函数|(扩展)欧拉定理|欧拉反演
    优美诗词(持续更新)
    魔法 [线段树优化DP]
    stone2 [期望]
  • 原文地址:https://www.cnblogs.com/potato-chip/p/13426685.html
Copyright © 2020-2023  润新知