python函数式编程sorted

#python函数式编程之sorted用法

sorted(iterable,key,reverse) 对所有可迭代的对象进行排序,返回一个list.
sorted主要用在list和dict中
iterable是一个可迭代对象
key制定排序规则,可以是一个函数,比如abs;也可以是指定的参数的某一个元素,参数来自可迭代对象中
reverse表示排序规则,reverse = True降序,reverse = False升序(默认)

  1. example 1:对数字列表进行排序
    1
    2
    3
    a = [2,6,-4,1,-7,9,3];
    b = sorted(a);print(b)
    c = sorted(a,key=abs);print(c)
1
2
[-7, -4, 1, 2, 3, 6, 9]
[1, 2, 3, -4, 6, -7, 9]
  1. example 2:利用key排序set
    1
    2
    3
    l = {('q',1),('e',6),('g',7),('b',3)}
    nl = sorted(l,key = lambda x:x[1])
    print(nl)
1
[('q', 1), ('b', 3), ('e', 6), ('g', 7)]
  1. example 3:利用key排序字符串
    1
    2
    3
    str0 = 'Hello world Python what are you Doing'.split()
    a = sorted(str0,key=str.lower,reverse=True)#lower不用加括号,只标明函数就行
    print(a)
1
['you', 'world', 'what', 'Python', 'Hello', 'Doing', 'are']
  1. example 4:test按照不同元素排序
    1
    2
    3
    4
    from operator import itemgetter
    L = [('john', 'A', 1), ('jane', 'B', 2),('bob','C',1)]
    ans = sorted(L,key = lambda x:x[1]);print(ans) #lambda函数根据第1个元素排序
    ans = sorted(L,key = itemgetter(2,1));print(ans) #itemgetter根据第2个-根据第1个排序
1
2
[('john', 'A', 1), ('jane', 'B', 2), ('bob', 'C', 1)]
[('john', 'A', 1), ('bob', 'C', 1), ('jane', 'B', 2)]