zoukankan      html  css  js  c++  java
  • 对sorted函数的补充,以及与列表中的排序方法sort()的比较

    sort方法:

      1,sort()是对一个容器(列表)进行排序,无返回值,直接改变容器。

      2,sort()能够运用key参数传入一个自定义的函数或者匿名函数(函数只能有一个参数)先对比较的元素进行某种操作,然后根据这个函数的返回值进行排序。

      3,key的参数的函数只能是具有一个参数的函数。

    内置sorted()函数:

      1,sorted()可以对所有的可迭代对象进行排序,有返回值,返回一个按某种规则排序之后的列表。这个规则可以由自己定义。 

      2,sorted()能够运用key参数传入一个自定义的函数或者匿名函数(函数只能有一个参数)先对比较的元素进行某种操作,然后根据这个函数的返回值进行排序。

      3,key的参数的函数只能是具有一个参数的函数。

      

    sort()方法的定义:

    def sort(self, key=None, reverse=False): # real signature unknown; restored from __doc__
            """ L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """
            pass
    '''
    key:用于为每个元素都生成一个比较大小的键,是排序的条件,
      可以是:key=int(使用int()函数将元素转换成一个整数进行比较),
      key=len(使用len()函数计算每个元素的长度进行比较),
      key=lambda..(使用一个自定义的匿名函数对元素进行某种操作,根据返回值进行比较)
    reverse:表示是否反序,默认从小到大,默认为Flase
    ''' ##一个list调用sort方法后,对原list进行排序

    sort()的使用: 

    1 >>> lst = [2,1,5,4,3]
    2 >>> lst.sort()
    3 >>> lst          #无返回值直接改变列表
    4 [1, 2, 3, 4, 5]
    5 >>> lst.sort(reverse=True)  #反序
    6 >>> lst
    7 [5, 4, 3, 2, 1]     
    8 >>>
    >>> lst = ["ft","ttrgh","fafdfd","q","qwe"]
    >>> lst.sort()    #默认对字符串的首字母进行排序
    >>> lst
    ['fafdfd', 'ft', 'q', 'qwe', 'ttrgh']
    >>> lst = ["ft","ttrgh","fafdfd","q","qwe"]
    >>> lst.sort(key=len)   #使用len()函数计算元素的长度,然后根据长度进行排序
    >>> lst
    ['q', 'ft', 'qwe', 'ttrgh', 'fafdfd']
    >>> lst = ["ft","ttrgh","fafdfd","q","qwe"]
    >>> lst.sort(key = lambda x:x[-1])   #利用自定义的匿名函数使得根据元素中字符串的最后字符进行排序。
    >>> lst
    ['fafdfd', 'qwe', 'ttrgh', 'q', 'ft']
    >>>
    >>> lst = ["ft","ttrgh","fafdfd","q","qwe"]
    >>> def my_sort(st):
    ...     return st[-1]
    ...
    >>> lst.sort(key=my_sort)
    >>> lst
    ['fafdfd', 'qwe', 'ttrgh', 'q', 'ft']
    >>>

    sorted()的定义:

    def sorted(*args, **kwargs): # real signature unknown
        """
        Return a new list containing all items from the iterable in ascending order.
        
        A custom key function can be supplied to customize the sort order, and the
        reverse flag can be set to request the result in descending order.
        """
    '''
    sorted()适用于任何可迭代容器,list.sort()仅支持list(本身就是list的一个方法)
    '''
    sorted(iterable, cmp=None, key=None, reverse=False)
    '''
    参数说明:
    iterable -- 可迭代对象。
    cmp -- 比较的函数(自定义函数),这个自定义函数具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
    key -- 比较函数和sort()的key参数类似,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
    注意:python3中有做修改,取消了cmp参数。
    '''

    在python3中sorted()的使用:

     1 >>> data = [{'name':'zhang','age':23},{'name':'li','age':22},{'name':'qian','age':20}]
     2 >>> name_sort = sorted(data,key = lambda x:x['name'])     #根据字典的name值排序
     3 >>> name_sort
     4 [{'name': 'li', 'age': 22}, {'name': 'qian', 'age': 20}, {'name': 'zhang', 'age': 23}]
     5 >>> data        #不会改变原列表
     6 [{'name': 'zhang', 'age': 23}, {'name': 'li', 'age': 22}, {'name': 'qian', 'age': 20}]
     7 >>> age_sort = sorted(data,key = lambda x:x['age'])  #根据字典的age值排序
     8 >>> age_sort
     9 [{'name': 'qian', 'age': 20}, {'name': 'li', 'age': 22}, {'name': 'zhang', 'age': 23}]
    1 #对字典进行排序
    2 {'a': 2, 'c': 1, 'b': 3}
    3 >>> key_sort = sorted(dit.items(),key = lambda k:k[0])     #根据字典的key进行排序
    4 >>> key_sort
    5 [('a', 2), ('b', 3), ('c', 1)]       #返回的是一个列表,不是字典了,可以自己实现一个比较函数作为key参数进行排序
    6 >>> value_sort = sorted(dit.items(),key = lambda k:k[1])    #根据字典的value进行排序
    7 >>> value_sort
    8 [('c', 1), ('a', 2), ('b', 3)]    
    #返回的是一个列表,不是字典了,可以自己实现一个比较函数作为key参数进行排序

    微信扫码,介绍更全面详细。

  • 相关阅读:
    使用paramiko的问题记录
    python常见异常及解决方法
    linux ps -aux各列含义
    常用技能
    超时程序管理
    跨年的总结和展望
    java json和对象互转
    一些常用功能总结
    ResultSet转成java类对象
    python常用功能总结
  • 原文地址:https://www.cnblogs.com/xuxianshen/p/12380169.html
Copyright © 2011-2022 走看看