Python 的key参数

2020-04-24  本文已影响0人  eeert2

上一篇 :python中list.sort方法和内置函数sorted的区别

摘自流畅的Python

Key参数很妙

list.sort,sorted,minmax函数的key参数是一个很棒的设计。

在其它语言里的排序函数需要用户提供一个接收两个参数的比较函数作为参数,像是Python2里的cmp(a,b)

key参数能够把事情变得简单高效。说它更简单,是因为只需要提供一个单参数来提取或计算一个值作为比较大小的标准依据。而Python2的这种设计则需要用户写一个返回-1,01的双参数函数。

说它更高效,是因为在每个元素上,key函数只会被调用一次。而双参数比较函数则在每一次两两比较的时候都会被调用。

诚然,在排序的时候,Python 总会比较两个键(key),但是那一阶段的计算会发生在 C 语言那一层,这样会比调用用户自定义的 Python 比较函数 更快。

另外,key 参数也能让你对一个混有数字字符和数值的列表进行排序。你只需要决定 到底是把字符看作数值,还是把数值看作字符:

>>> l = [28, 14, '28', 5, '9', '1', 0, 6, '23', 19] 
>>> sorted(l, key=int) 
[0, '1', 5, 6, '9', 14, 19, '23', 28, '28'] 
>>> sorted(l, key=str) 
[0, '1', 14, 19, '23', 28, '28', 5, 6, '9']

下一篇:用bisect来管理已排序的序列

上一篇 下一篇

猜你喜欢

热点阅读