泉州网站建设报价,新余专业的企业网站建设公司,衡水做网站推广的公司,苏州市建设交通高等学校网站operator 模块提供了一套与Python的内置运算符对应的高效率函数。例如#xff0c;operator.add(x, y) 与表达式 xy 相同。 许多函数名与特殊方法名相同#xff0c;只是没有双下划线。为了向后兼容性#xff0c;也保留了许多包含双下划线的函数。为了表述清楚#xff0c;建议…operator 模块提供了一套与Python的内置运算符对应的高效率函数。例如operator.add(x, y) 与表达式 xy 相同。 许多函数名与特殊方法名相同只是没有双下划线。为了向后兼容性也保留了许多包含双下划线的函数。为了表述清楚建议使用没有双下划线的函数。 函数包含的种类有对象的比较运算、逻辑运算、数学运算以及序列运算。 对象比较函数适用于所有的对象函数名根据它们对应的比较运算符命名。
操作符函数
操作符表达式含义operator.lt(a, b)aboperator.le(a, b)aboperator.eq(a, b)aboperator.ne(a, b)a!boperator.gt(a, b)aboperator.ge(a, b)aboperator.not_(obj)not objoperator.truth(obj)bool(obj)operator.is_(a, b)a is boperator.is_not(a, b)a is not boperator.abs(obj)abs(obj)operator.pos(obj)objoperator.neg(obj)-objoperator.add(a, b)aboperator.sub(a, b)a-boperator.mul(a, b)a*boperator.truediv(a, b)a/boperator.floordiv(a, b)a//boperator.mod(a, b)a%boperator.pow(a, b)a**boperator.and_(a, b)aboperator.or_(a, b)a|boperator.xor(a, b)a^boperator.matmul(a, b)ab operator.inv(obj) operator.invert(obj) ~objoperator.lshift(a, b)aboperator.rshift(a, b)aboperator.index(a)index(a)operator.concat(a, b)aboperator.contains(a, b)b in aoperator.countOf(a, b)count(a,b)返回 b 在 a 中的出现次数operator.delitem(a, b)del a[b]operator.getitem(a, b)a[b]operator.indexOf(a, b)返回 b 在 a 中首次出现所在的索引号。operator.setitem(a, b, c)a[b]coperator.length_hint(obj, default0)len(obj)operator.call(obj, /, *args, **kwargs)obj(*args, **kwargs) operator.attrgetter(attr) operator.attrgetter(*attrs) 返回一个可从操作数中获取 attr 的可调用对象。 如果请求了一个以上的属性则返回一个属性元组。 属性名称还可包含点号。 例如 在 f attrgetter(name) 之后调用 f(b) 将返回 b.name。 在 f attrgetter(name, date) 之后调用 f(b) 将返回 (b.name, b.date)。 在 f attrgetter(name.first, name.last) 之后调用 f(b) 将返回 (b.name.first, b.name.last)。 operator.itemgetter(item) operator.itemgetter(*items) 返回一个使用操作数的 __getitem__() 方法从操作数中获取 item 的可调用对象。 如果指定了多个条目则返回一个查找值的元组。 例如 在 f itemgetter(2) 之后调用 f(r) 将返回 r[2]。 在 g itemgetter(2, 5, 3) 之后调用 g(r) 将返回 (r[2], r[5], r[3])。 operator.methodcaller(name, /, *args, **kwargs)返回一个在操作数上调用 name 方法的可调用对象。 如果给出额外的参数和/或关键字参数它们也将被传给该方法。 例如 在 f methodcaller(name) 之后调用 f(b) 将返回 b.name()。 在 f methodcaller(name, foo, bar1) 之后调用 f(b) 将返回 b.name(foo, bar1)。 operator.iadd(a, b)a boperator.isub(a, b)a - boperator.imul(a, b)a * boperator.itruediv(a, b)a / boperator.ifloordiv(a, b)a // boperator.imod(a, b)a % boperator.ipow(a, b)a ** boperator.iconcat(a, b)a boperator.ilshift(a, b)a boperator.irshift(a, b)a boperator.imatmul(a, b)a boperator.iand(a, b)a boperator.ior(a, b)a | boperator.ixor(a, b)a ^ b
import operator
import functoolsprint(operator.le(10, 20)) #True
print(operator.add(10, 20)) #30numlist [1,2,3,4,5,6,7,8]
result map(operator.add, numlist, numlist)
print(list(result)) #[2, 4, 6, 8, 10, 12, 14, 16]
result functools.reduce(operator.mul, numlist)
print(result) #40320
对象属性提取attrgetter
attrgetter 类可以获取对象的属性用于 map(), stored()等高阶函数 操作
import operator
import functoolsclass Student:def __init__(self, name, age):self.name nameself.age agedef __repr__(self):return f({self.name}, {self.age})slist [Student(Alice, 15), Student(Bibe, 16), Student(Chen, 12), Student(Jack, 13)]#按年龄排序
print(sorted(slist, keyoperator.attrgetter(age)))
#按姓名排序
print(sorted(slist, keyoperator.attrgetter(name)))‘’
[(self.nameChen, self.age12), (self.nameJack, self.age13), (self.nameAlice, self.age15), (self.nameBibe, self.age16)]
[(self.nameAlice, self.age15), (self.nameBibe, self.age16), (self.nameChen, self.age12), (self.nameJack, self.age13)]
‘
对象方法提取methodcaller
operator.methodcaller(name, /, *args, **kwargs)
返回一个在操作数上调用 name 方法的可调用对象。 如果给出额外的参数和/或关键字参数它们也将被传给该方法。 例如
在 f methodcaller(name) 之后调用 f(b) 将返回 b.name()。在 f methodcaller(name, foo, bar1) 之后调用 f(b) 将返回 b.name(foo, bar1)。 import operator
import functoolsclass Student:def __init__(self, name, age):self.name nameself.age agedef __repr__(self):return f({self.name}, {self.age})def isPupil(self):if self.age 6 and self.age 12:return Truereturn Falseslist [Student(Alice, 6), Student(Bibe, 8), Student(Chen, 12), Student(Jack, 9)]print(list(filter(operator.methodcaller(isPupil), slist)))
#[(self.nameAlice, self.age6), (self.nameBibe, self.age8), (self.nameJack, self.age9)] 下标获取itemgetter
operator.itemgetter(item)
operator.itemgetter(*items)
返回一个使用操作数的 __getitem__() 方法从操作数中获取 item 的可调用对象。 如果指定了多个条目则返回一个查找值的元组。 例如 在 f itemgetter(2) 之后调用 f(r) 将返回 r[2]。 在 g itemgetter(2, 5, 3) 之后调用 g(r) 将返回 (r[2], r[5], r[3])。
itemgetter(1)(ABCDEFG)
B
itemgetter(1, 3, 5)(ABCDEFG)
(B, D, F)
itemgetter(slice(2, None))(ABCDEFG)
CDEFG
soldier dict(rankcaptain, namedotterbart)
itemgetter(rank)(soldier)
captain
使用 itemgetter() 从元组的记录中提取特定字段的例子
inventory [(apple, 3), (banana, 2), (pear, 5), (orange, 1)]
getcount itemgetter(1)
list(map(getcount, inventory))
[3, 2, 5, 1]
sorted(inventory, keygetcount)
[(orange, 1), (banana, 2), (apple, 3), (pear, 5)] 将运算符映射到函数 运算 语法 函数 加法 a b add(a, b) 字符串拼接 seq1 seq2 concat(seq1, seq2) 包含测试 obj in seq contains(seq, obj) 除法 a / b truediv(a, b) 除法 a // b floordiv(a, b) 按位与 a b and_(a, b) 按位异或 a ^ b xor(a, b) 按位取反 ~ a invert(a) 按位或 a | b or_(a, b) 取幂 a ** b pow(a, b) 标识 a is b is_(a, b) 标识 a is not b is_not(a, b) 索引赋值 obj[k] v setitem(obj, k, v) 索引删除 del obj[k] delitem(obj, k) 索引取值 obj[k] getitem(obj, k) 左移 a b lshift(a, b) 取模 a % b mod(a, b) 乘法 a * b mul(a, b) 矩阵乘法 a b matmul(a, b) 取反算术 - a neg(a) 取反逻辑 not a not_(a) 正数 a pos(a) 右移 a b rshift(a, b) 切片赋值 seq[i:j] values setitem(seq, slice(i, j), values) 切片删除 del seq[i:j] delitem(seq, slice(i, j)) 切片取值 seq[i:j] getitem(seq, slice(i, j)) 字符串格式化 s % obj mod(s, obj) 减法 a - b sub(a, b) 真值测试 obj truth(obj) 比较 a b lt(a, b) 比较 a b le(a, b) 相等 a b eq(a, b) 不等 a ! b ne(a, b) 比较 a b ge(a, b) 比较 a b gt(a, b)