• 第41天: operator模块


    by 某某白米饭

    operator 模块

    operator 模块提供了一套与 Python 的内置运算符对应的高效率函数。

    函数的种类

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

    比较运算

    运算 函数 语法
    小于 lt(a, b) a < b
    小于等于 le(a, b) a <= b
    大于 gt(a, b) a > b
    大于等于 ge(a, b) a >= b
    等于 eq(a, b) a == b
    不等于 ne(a, b) a != b

    实例:

    >>> from operator import *
    >>> lt(1, 2)     
    True
    >>> le(1, 3)    
    True
    >>> le(3, 3)   
    True
    >>> gt(10, 1)   
    True
    >>> ge(10, 10)
    True
    >>> ge(10, 9)  
    True
    >>> eq(10, 9) 
    False
    >>> ne(10,10) 
    False
    >>> ne(10, 9)
    True
    

    逻辑运算

    运算 函数 语法
    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

    实例:

    >>> from operator import *
    >>> and_(1, 1)
    1
    >>> or_(1, 2)
    3
    >>> xor(1, 2)
    3
    >>> invert(True)
    -2
    >>> invert(1)
    -2
    >>> invert(2)
    -3
    >>> a = [1, 2, 3]
    >>> b = 3
    >>> is_(a, b)
    False
    >>> is_not(a, b)
    True
    >>> truth(a)
    True
    

    数学运算

    运算 函数 语法
    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

    实例:

    >>> from operator import *
    >>> add(1, 2)
    3
    >>> truediv(3, 2)
    1.5
    >>> mul(3, 2)
    6
    >>> sub(3, 2)
    1
    >>> pow(2, 8)
    256
    >>> neg(5)
    -5
    >>> neg(-5)
    5
    >>> pos(10)
    10
    >>> pos(-10)
    -10
    >>> mod(10, 3)
    1
    

    序列运算

    运算 函数 语法
    字符串拼接 concat(seq1, seq2) seq1 + seq2
    包含 contains(seq, obj) obj in seq
    索引赋值 setitem(obj, i, v) obj[i] = v
    索引删除 delitem(obj, i) del obj[i]
    索引取值 getitem(obj, i) obj[i]
    切片赋值 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

    实例:

    >>> from operator import *
    >>> concat('hello', ' Python')
    'hello Python'
    >>> a = [1, 3, 4]
    >>> contains(a, 2)
    False
    >>> setitem(a, 1, 5)
    >>> a
    [1, 5, 4]
    >>> delitem(a, 2)
    >>> a
    [1, 5]
    >>> getitem(a, 1)
    5
    >>> setitem(a, slice(1, 3), 'ijk')
    >>> a
    [1, 'i', 'j', 'k']
    >>> delitem(a, slice(2, 3))
    >>> a
    [1, 'i', 'k']
    >>> mod('str %s', 'value')
    'str value'
    

    attrgetter类

    operator 模块的 attrgetter 类可以获取对象的属性用于 map(), stored() 操作

    attrgetter实例:

    from operator import *
    
    class Student:
        pass
    
        def __init__(self, name, score):
            self.name = name
            self.score = score
    
        def __repr__(self):
            return '%s(name=%r,score=%r)' % (self.__class__.__name__, self.name, self.score)
    
    if __name__ == '__main__':
        students = [Student("zhangSan", 89),
                    Student("liSi", 60),
                    Student("wangWu", 70),
                    Student("xiaoMing", 100)]
    
    
        print("按照【分数】排序: ")
        print(sorted(students, key=attrgetter('score'), reverse=True))
    
        g = attrgetter("score") # 获取【分数】属性
        vals = [g(i) for i in students]
        print ('获取分数属性:' + vals)
    
    

    itemgetter类

    operator 模块的 itemgetter 类会返回一个可调用对象,传入多个对象则返回元组

    itemgetter实例:

    >>> from operator import *
    >>> itemgetter(3)('abcdefg')
    'd'
    >>> itemgetter(1, 3, 4)('abcdefg')
    ('b', 'd', 'e')
    >>> itemgetter('name')({'name': 'liSi', 'age': 18})
    'liSi'
    >>> soldier = dict(rank='captain', name='dotterbart')
    >>> itemgetter('rank')(soldier)
    'captain'
    >>> inventory = [('apple', 8), ('banana', 2), ('pear', 7)]
    >>> getCount = itemgetter(1)
    >>> list(map(getCount, inventory))
    [8, 2, 7]
    >>> sorted(inventory, key = getCount)
    [('banana', 2), ('pear', 7), ('apple', 8)]
    
    **关注公众号:python技术,回复"python"一起学习交流**
    ![](http://favorites.ren/assets/images/python.jpg)
  • 相关阅读:
    微信小程序wx.chooseImage和wx.previewImage的综合使用(图片上传不限制最多张数)
    js数组与字符串之间的相互转换
    微信小程序wx.previewImage实用案例(交流QQ群:604788754)
    PHP:第一章——PHP中的魔术常量
    小程序模板嵌套以及相关遍历数据绑定
    6 大主流 Web 框架优缺点对比:15篇前端热文回看
    通俗地讲,Netty 能做什么?
    Netty
    为什么选择Netty
    linux下gsoap的初次使用 -- c风格加法实例
  • 原文地址:https://www.cnblogs.com/ityouknow/p/12987691.html
Copyright © 2020-2023  润新知