#python函数式编程之sorted用法
sorted(iterable,key,reverse) 对所有可迭代的对象进行排序,返回一个list.
sorted主要用在list和dict中
iterable是一个可迭代对象
key制定排序规则,可以是一个函数,比如abs;也可以是指定的参数的某一个元素,参数来自可迭代对象中
reverse表示排序规则,reverse = True降序,reverse = False升序(默认)
- example 1:对数字列表进行排序
1
2
3a = [2,6,-4,1,-7,9,3];
b = sorted(a);print(b)
c = sorted(a,key=abs);print(c)
1 | [-7, -4, 1, 2, 3, 6, 9] |
- example 2:利用key排序set
1
2
3l = {('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)] |
- example 3:利用key排序字符串
1
2
3str0 = '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'] |
- example 4:test按照不同元素排序
1
2
3
4from 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 | [('john', 'A', 1), ('jane', 'B', 2), ('bob', 'C', 1)] |