首页 > Python编程 > Python小技巧||利用itemgetter提升排序速度
2022
08-15

Python小技巧||利用itemgetter提升排序速度

排序是编程是最常遇到的场景了,今天分享一个小技巧,可以让 Python 排序的速度有所提升。你看完可以收藏备用。通常,我们要排序的数据并不是纯数字或纯字母,而是各种数据类型的混合,比如要排序的数据可能是这个样子:

data = [('c',3),('b',1),('a',2)]

默认情况下,排序按照列表元素的第一个值进行的排序:

In [6]: data = [('c',3),('b',1),('a',2)]

In [7]: sorted(data)
Out[7]: [('a', 2), ('b', 1), ('c', 3)]

In [8]:

如果要按照第二个值进行排序,则需要传入一个 lambda 函数,来指定要排序的 key:

In [8]: data = [('c',3),('b',1),('a',2)]

In [9]: sorted(data,key = lambda x:x[1])
Out[9]: [('b', 1), ('a', 2), ('c', 3)]

In [10]:

现在,你可以不用 lambda 函数,而是使用 itemgetter 函数,而且速度更快。

itemgetter 函数可以生成高效的 getter 函数版本,可以与 sorted() 函数结合使用以提高排序操作的性能。

上面的代码就可以写成这样:

In [11]: from operator import itemgetter

In [12]: data = [('c',3),('b',1),('a',2)]

In [13]: sorted(data,key = itemgetter(1))
Out[13]: [('b', 1), ('a', 2), ('c', 3)]

你可能好奇,itemgetter 是如何工作的?那么请看下面的代码:

In [14]: item = ('c',3)

In [15]: getter = itemgetter(1)

In [16]: getter(item)
Out[16]: 3 In [17]: getter = itemgetter(0)

In [18]: getter(item)
Out[18]: 'c' In [19]: item = {'c':3}

In [22]: getter = itemgetter('c')

In [23]: getter(item)
Out[23]: 3 

itemgetter() 是 Python 标准库的一部分,向 itemgetter() 传递一个参数,这个参数或者是索引位置,或者是字典的键,然后 itemgetter() 函数将返回一个可以调用的 getter 对象。

现在让我们来测试一下 lambda 和 itemgetter 在排序时,到底哪个更高效?

从上面的结果可以看出,使用 itemgetter() 更高效。

以上就是“Python小技巧||利用itemgetter提升排序速度”的详细内容,想要了解更多Python教程欢迎持续关注编程学习

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取