operator
这个模块包含一组用C实现的函数,这些函数能够实现 Python 对应的运算操作符,常见的用法如下:
In [1]: import operator In [2]: operator.lt(2, 3) # 判断第一个参数是否小于第二个参数 Out[2]: True In [3]: operator.gt(2, 3) # 判断第一个参数是否大于第二个参数 Out[3]: False In [4]: operator.ne(2, 3) # 判断第一个参数是否不等于第二个参数 Out[4]: True In [5]: operator.abs(-5) # 相当于abs()函数,用于取一个数的绝对值 Out[5]: 5 In [6]: operator.pow(2, 3) # 相当于pow()函数,表示2的3次方 Out[6]: 8
特殊用法:operator模块提供的 itemgetter() 函数用于获取一个可迭代对象的指定索引的数据,用法如下
In [12]: l = ['a', 'b', 'c'] # 先定义一个可迭代对象 In [13]: op = operator.itemgetter(1) # operator.itemgetter(1) 表示获取索引值为1的数据,我们把他赋值给op,op相当于一个函数 In [14]: op(l) # op这个函数接收一个可迭代的对象,结果相当于获取这个可迭代对象的索引值为1的数据 Out[14]: 'b' In [15]: op = operator.itemgetter(1, 2) # 同上,表示获取索引值为1或索引值为2的数据 In [16]: op(l) Out[16]: ('b', 'c')
optrator.itemgetter() 通常与 sorted() 函数结合使用,用来对字典进行排序:
In [1]: import operator In [2]: x = {1:2, 3:4, 4:3, 2:1, 0:0} In [3]: sorted(x.iteritems(), key=operator.itemgetter(0)) # 根据字典的key进行排序 Out[3]: [(0, 0), (1, 2), (2, 1), (3, 4), (4, 3)] In [4]: sorted(x.iteritems(), key=operator.itemgetter(1)) # 根据字典的value进行排序 Out[4]: [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]