Python operator模块

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 *
print(lt(1, 2))     
True
print(le(1, 3)))     
True
print(le(3, 3))    
True
print(gt(10, 1))    
True
print(ge(10, 10)) 
True
print(ge(10, 9))   
True
print(eq(10, 9))  
False
print(ne(10,10))  
False
print(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 *
print(and_(1, 1)) 
1
print(or_(1, 2)) 
3
print(xor(1, 2)) 
3
print(invert(True)) 
-2
print(invert(1)) 
-2
print(invert(2)) 
-3
a = [1, 2, 3]
b = 3
print(is_(a, b)) 
False
print(is_not(a, b)) 
True
print(truth(a)) 
True

数学运算
在这里插入图片描述
实例:

from operator import *
print(add(1, 2)) 
3
print(truediv(3, 2)) 
1.5
print(mul(3, 2)) 
6
print(sub(3, 2)) 
1
print(pow(2, 8)) 
256
print(neg(5)) 
-5
print(neg(-5)) 
5
print(pos(10)) 
10
print(pos(-10)) 
-10
print(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 *
print(concat('hello', ' Python')
'hello Python'
a = [1, 3, 4]
print(contains(a, 2)) 
False
setitem(a, 1, 5)
print(a) 
[1, 5, 4]
delitem(a, 2)
print(a) 
[1, 5]
print(getitem(a, 1)) 
5
setitem(a, slice(1, 3), 'ijk')
print(a) 
[1, 'i', 'j', 'k']
delitem(a, slice(2, 3))
print(a) 
[1, 'i', 'k']
print(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)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值