zoukankan      html  css  js  c++  java
  • Python3之高阶函数sorted

      排序算法

      Python内置的sorted()函数可以对list进行排序

    >>> sorted([36,5,-12,9,-21])
    [-21, -12, 5, 9, 36]
    

      此外,sorted也是一个高阶函数,它还可以接收一个key函数来实现自定义排序,例如按绝对值大小排序

    >>> sorted([36,5,-12,9,-21],key=abs)
    [5, 9, -12, -21, 36]
    

      key指定的函数将作用于list的每一个元素上,并根据返回的结果进行排序

    list=[36,5,-12,9,21]
    keys=[36,5,12,9,21]
    

      然后sorted()函数按照keys进行排序,并按照对应关系返回list相应的元素

    keys排序结果 => [5, 9,  12,  21, 36]
                    |  |    |    |   |
    最终结果     => [5, 9, -12, -21, 36]
    

      字符串排序的例子

    >>> sorted(['bob','about','Zoo','Credit'])
    ['Credit', 'Zoo', 'about', 'bob']
    

      默认情况下,对于字符串的排序,是安装ASCII大小比较的,由于'Z'<'a'所以,大写字母在前

      现在要忽略大小写按照字母排序,加一个函数要不把大写变成小写,要不把小写变成大写排序

    >>> sorted(['bob','about','Zoo','Credit'],key=str.lower)
    ['about', 'bob', 'Credit', 'Zoo']
    

      把str.lower方法依次作用于列表

    list=['bob','about','Zoo','Credit']
    keys=[str.lower('bob'),str.lower('about'),str.lower('Zoo'),str.lower('Credit')]
    keys=['bob','about','zoo','credit']
    最终排序结果['about','bob','Credit','Zoo']
    

      

      练习:用一组tuple表示学生名字和成绩,用sorted()对上述列表分别按名字及成绩排序

    L=[('Bob',75),('Adam',92),('Bart',66),('Lisa',88)]
    #函数返回第一个元素名字
    def by_name(t):
        m=t[0]
        return m
    
    #函数返回第二个元素成绩
    def by_score(t):
        n=t[1]
        return n
    
    L1=sorted(L,key=by_name)
    L2=sorted(L,key=by_score,reverse=True)
    print(L1)
    print(L2)
    

      输出,按名字及成绩倒序排序

    [('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
    [('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]
    

      

  • 相关阅读:
    Java 常见异常种类
    Oracle存储过程记录异常
    oracle定时器
    oracle生成单据号
    oracle计算时间秒数差
    oracle分组后取每组第一条数据
    was部分更新
    数据库分区
    JTA事务管理
    docker
  • 原文地址:https://www.cnblogs.com/minseo/p/11075849.html
Copyright © 2011-2022 走看看