23-高级特性之内建方法(4)

sorted

  • 传入一个Iterable对象I和排序参数 [key=..., reverse=.. ] #命名关键字参数

  • {注意key参数可以传入一个自定义函数f} 等价于 对每一个I(i)都先执行f,再拿来排序

    1.普通数值型

    L1 = [36,5,-12,9,-21]
    L1 = sorted(L1)
    print(L1,' ')
    L1 = sorted(L1, key=abs)
    print(L1,' ')
    L1 = sorted(L1, key=abs, reverse=True)
    print(L1, ' ')

    2.普通字符串

    L2 = ['bob', 'about', 'Zoo', 'Credit'] #依据ASCI码
    L2 = sorted(L2) #没有忽略大小写 A<a{就ASCI而言}
    print(L2,' ')
    L2 = sorted(L2, key=str.lower) #把所有str都lower或者upper,即忽略大小写
    print(L2, ' ')
    L2 = sorted(L2, key=str.upper, reverse=True)
    print(L2, ' ')

    3作业:根据名字对T进行排序

    L3 = [('Bob', 75),('Adam', 92),('Bart', 66),('Lisa', 88),('haoZhang',22)] #list里面嵌套tuple
    def fn(t): #传入一个tuple
    return t[0].lower() #返回名字的小写后的字符串
    L3 = sorted(L3, key=fn)
    print(L3,' ')
    L3 = sorted(L3, key=fn, reverse=True)
    print(L3, ' ')

    根据分数进行排序

    def fn_score(t):
    return t[1]
    L3 = sorted(L3,key=fn_score,reverse=True)
    print(L3,' ')

原文地址:https://www.cnblogs.com/LS1314/p/8504486.html