operator模块

Posted xiao-xue-di

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了operator模块相关的知识,希望对你有一定的参考价值。

=============operator模块简单介绍==============

简单记录一些,详细看官方文档。
operator.concat(a, b)
**operator.__concat__(a, b)**
对于 a、b序列,返回 a + b(列表合并)
                  
---------------------------------

operator.countOf(a, b)
返回 b 在 a 中出现的次数
                  
---------------------------------

perator.delitem(a, b)
**operator.__delitem__(a, b)**
删除 a 中索引为 b 的值
                  
---------------------------------
operator.getitem(a, b)
**operator.__getitem__(a, b)**
返回 a 中索引为 b 的值

---------------------------------
                  
operator.indexOf(a, b)
返回 b 在 a 中首次出现位置的索引值。

---------------------------------
                  
operator.setitem(a, b, c)
**operator.__setitem__(a, b, c)**
设置 a 中索引值为 b 的项目值更改为 c

------------------------------------------------------------------
operator 模块也为属性和项目的查找提供了一些工具。这些工具使得 map(), sorted(),tertools.groupby()
或其他函数 需要的参数的提取更方便更快速。上面的函数有一个共同点,即均接受函数参数。

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 。如果指定了多个
item , 返回查找值的元组。

比如:

f = itemgetter(2), 调用 f(r) 返回 r[2]

g = itemgetter(2, 5, 3), 调用 f(r) 返回 (r[2], r[3], r[3])
                  
                  
          
          最后 operator 相关的信息对应如下:

 

OperationSyntaxFunction
Addition a + b add(a, b)
Concatenation seq1 + seq2 concat(seq1, seq2)
Containment Test obj in seq contains(seq, obj)
Division a / b truediv(a, b)
Division a // b floordiv(a, b)
Bitwise And a & b and_(a, b)
Bitwise Exclusive Or a ^ b xor(a, b)
Bitwise Inversion ~ a invert(a)
Bitwise Or a | b or_(a, b)
Exponentiation a ** b pow(a, b)
Identity a is b is_(a, b)
Identity a is not b is_not(a, b)
Indexed Assignment obj[k] = v setitem(obj, k, v)
Indexed Deletion del obj[k] delitem(obj, k)
Indexing obj[k] getitem(obj, k)
Left Shift a << b lshift(a, b)
Modulo a % b mod(a, b)
Multiplication a * b mul(a, b)
Matrix Multiplication a @ b matmul(a, b)
Negation (Arithmetic) - a neg(a)
Negation (Logical) not a not_(a)
Positive + a pos(a)
Right Shift a >> b rshift(a, b)
Slice Assignment seq[i:j] = values setitem(seq, slice(i, j), values)
Slice Deletion del seq[i:j] delitem(seq, slice(i, j))
Slicing seq[i:j] getitem(seq, slice(i, j))
String Formatting s % obj mod(s, obj)
Subtraction a - b sub(a, b)
Truth Test obj truth(obj)
Ordering a < b lt(a, b)
Ordering a <= b le(a, b)
Equality a == b eq(a, b)
Difference a != b ne(a, b)
Ordering a >= b ge(a, b)
Ordering a > b gt(a, b)

以上是关于operator模块的主要内容,如果未能解决你的问题,请参考以下文章

Operator '||' cannot be applied to operands of type 'bool?' and 'bool?'(代码片段

svn报错cleanup failed–previous operation has not finished; run cleanup if it was interrupted的解决办法(代码片段

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

当指针指向数组时,为啥 operator(*) 的值不起作用?

如何有条件地将 C 代码片段编译到我的 Perl 模块?

node.js 模块:Async vs Fibers.promise vs Q_oper8