翼度科技»论坛 编程开发 python 查看内容

Python中operator 模块的用法

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
operator 模块提供了一套与 Python 的内置运算符对应的高效率函数。
1.函数的种类

函数包含的种类有:对象的比较运算、逻辑运算、数学运算和序列运算
2.比较运算

运算函数语法小于lt(a, b)a < b小于等于le(a, b)a  b大于等于ge(a, b)a >= b等于eq(a, b)a == b不等于ne(a, b)a != b实例:
  1. >>> from operator import *
  2. >>> lt(1, 2)     
  3. True
  4. >>> le(1, 3)   
  5. True
  6. >>> le(3, 3)   
  7. True
  8. >>> gt(10, 1)   
  9. True
  10. >>> ge(10, 10)
  11. True
  12. >>> ge(10, 9)  
  13. True
  14. >>> eq(10, 9)
  15. False
  16. >>> ne(10,10)
  17. False
  18. >>> ne(10, 9)
  19. True
复制代码
3.逻辑运算

运算函数语法与and_(a, b)a & b或or_(a, b)a异或xor(a, b)a ^ b取反invert(a, b)~ a对象是否相等is_(a, b)a is b对象是否不相等is_not(a, b)a is not b真值truth(obj)obj实例:
  1. >>> from operator import *
  2. >>> and_(1, 1)
  3. 1
  4. >>> or_(1, 2)
  5. 3
  6. >>> xor(1, 2)
  7. 3
  8. >>> invert(True)
  9. -2
  10. >>> invert(1)
  11. -2
  12. >>> invert(2)
  13. -3
  14. >>> a = [1, 2, 3]
  15. >>> b = 3
  16. >>> is_(a, b)
  17. False
  18. >>> is_not(a, b)
  19. True
  20. >>> truth(a)
  21. True
复制代码
4.数学运算

运算函数语法加add(a ,b)a + b除truediv(a, b)a / b乘mul(a, b)a * b减sub(a, b)a - b幂pow(a, b)a ** b负数neg(a)- a正数pos(a)+ a取模mod(a, b)a % b实例:
  1. >>> from operator import *
  2. >>> add(1, 2)
  3. 3
  4. >>> truediv(3, 2)
  5. 1.5
  6. >>> mul(3, 2)
  7. 6
  8. >>> sub(3, 2)
  9. 1
  10. >>> pow(2, 8)
  11. 256
  12. >>> neg(5)
  13. -5
  14. >>> neg(-5)
  15. 5
  16. >>> pos(10)
  17. 10
  18. >>> pos(-10)
  19. -10
  20. >>> mod(10, 3)
  21. 1
复制代码
5.序列运算

运算函数语法字符串拼接concat(seq1, seq2)seq1 + seq2包含contains(seq, obj)obj in seq索引赋值setitem(obj, i, v)obj = v索引删除delitem(obj, i)del obj索引取值getitem(obj, i)obj切片赋值setitem(seq, slice(i, j), values)seq[i:j] = values切片删除delitem(seq, slice(i, j))del seq[i:j]切片取值getitem(seq, slice(i, j))seq[i:j]格式化mod(s, obj)s % obj实例:
  1. >>> from operator import *
  2. >>> concat('hello', ' Python')
  3. 'hello Python'
  4. >>> a = [1, 3, 4]
  5. >>> contains(a, 2)
  6. False
  7. >>> setitem(a, 1, 5)
  8. >>> a
  9. [1, 5, 4]
  10. >>> delitem(a, 2)
  11. >>> a
  12. [1, 5]
  13. >>> getitem(a, 1)
  14. 5
  15. >>> setitem(a, slice(1, 3), 'ijk')
  16. >>> a
  17. [1, 'i', 'j', 'k']
  18. >>> delitem(a, slice(2, 3))
  19. >>> a
  20. [1, 'i', 'k']
  21. >>> mod('str %s', 'value')
  22. 'str value'
复制代码
6.attrgetter类

operator 模块的 attrgetter 类可以获取对象的属性用于 map(), stored() 操作
attrgetter实例:
  1. from operator import *
  2. class Student:
  3.     pass
  4.     def __init__(self, name, score):
  5.         self.name = name
  6.         self.score = score
  7.     def __repr__(self):
  8.         return '%s(name=%r,score=%r)' % (self.__class__.__name__, self.name, self.score)
  9. if __name__ == '__main__':
  10.     students = [Student("zhangSan", 89),
  11.                 Student("liSi", 60),
  12.                 Student("wangWu", 70),
  13.                 Student("xiaoMing", 100)]
  14.         #学习中遇到问题没人解答?小编创建了一个Python学习交流群:153708845
  15.     print("按照【分数】排序: ")
  16.     print(sorted(students, key=attrgetter('score'), reverse=True))
  17.     g = attrgetter("score") # 获取【分数】属性
  18.     vals = [g(i) for i in students]
  19.     print ('获取分数属性:' + vals)
复制代码
7.itemgetter类

operator 模块的 itemgetter 类会返回一个可调用对象,传入多个对象则返回元组
itemgetter实例:
  1. >>> from operator import *
  2. >>> itemgetter(3)('abcdefg')
  3. 'd'
  4. >>> itemgetter(1, 3, 4)('abcdefg')
  5. ('b', 'd', 'e')
  6. >>> itemgetter('name')({'name': 'liSi', 'age': 18})
  7. 'liSi'
  8. >>> soldier = dict(rank='captain', name='dotterbart')
  9. >>> itemgetter('rank')(soldier)
  10. 'captain'
  11. >>> inventory = [('apple', 8), ('banana', 2), ('pear', 7)]
  12. >>> getCount = itemgetter(1)
  13. >>> list(map(getCount, inventory))
  14. [8, 2, 7]
  15. >>> sorted(inventory, key = getCount)
  16. [('banana', 2), ('pear', 7), ('apple', 8)]
复制代码
来源:https://www.cnblogs.com/djdjdj123/p/18141001
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
来自手机

举报 回复 使用道具