上QQ阅读APP看书,第一时间看更新
2.5.4 通过sorted方法排序对象
sorted方法的作用是对所有指定的对象进行排序操作,语法如下:
sorted(iterable,key=None, reverse=False)
其中,参数iterable是待排序的序列;如果序列中有多个可以排序的元素,则可以通过参数key来定义待比较的元素;reverse表示排序方式,True表示降序,False表示升序,默认值是False。
在3个参数里,只有iterable是必须传入的,另外两个参数都是可选的。调用sorted方法后,能得到排好序的序列。在如下的SortedDemo案例中,我们将演示sorted函数的常见用法。
01 score = [98,57,100,95] 02 print(sorted(score)) # [57, 95, 98, 100] 03 # [100, 98, 95, 57] 04 print(sorted(score,reverse=True)) 05 employee = [('Tom',10000,'B'), ('Peter',9000,'A'), ('John',15000,'C')] 06 sortedBySalary=sorted(employee, key=lambda x: x[1]) 07 # [('Peter', 9000, 'A'), ('Tom', 10000, 'B'), ('John', 15000, 'C')] 08 print(sortedBySalary) 09 sortedLevel=sorted(employee, key=lambda x: x[2],reverse=True) 10 # [('John', 15000, 'C'), ('Tom', 10000, 'B'), ('Peter', 9000, 'A')] 11 print(sortedLevel)
第2行的sorted方法只有1个参数,默认是对score序列进行升序排列,从输出结果上能确认这点。在第4行的sorted方法里,同样是对score排序,但通过reverse参数指定为降序排列。
第5行定义的employee序列有多个维度,在第6行的sorted方法里,通过key定义的lambda表达式指定了根据x[1]来排序。从第8行的输出语句中我们能看到,排序好的sortedBySalary序列确实是按照每个维度的第2个数进行升序排列的。
在第9行的sorted方法里,同样通过由key参数指定的lambda表达式指定了待比较的元素,不过这里是x[2],也就是维度中的第3个数,而且通过reverse=True指定按降序排列。从第11行的输出结果上来看,能确认排序比较的元素和降序排列结果。