您的位置:首页 > 编程语言 > Python开发

【Python】operator 模块简单介绍

2018-01-14 20:08 621 查看
简单介绍几个常用的函数,其他的请参考文档
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(), itertools.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])


相当于:
def itemgetter(*items):
if len(items) == 1:
item = items[0]
def g(obj):
return obj[item]
else:
def g(obj):
return tuple(obj[item] for item in items)
return g

运算符的 
__getitem__()
方法可接受任意类型的项目。字典接收任意的哈希值。列表、元组和字符串接收一个索引或字符片段。
>>> itemgetter(1)('ABCDEFG')
'B'
>>> itemgetter(1,3,5)('ABCDEFG')
('B', 'D', 'F')
>>> itemgetter(slice(2,None))('ABCDEFG')
'CDEFG'

使用 
itemgetter()
 从元组序列中获取指定的域值,比如:
>>> inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
>>> getcount = itemgetter(1)
>>> map(getcount, inventory)
[3, 2, 5, 1]
>>> sorted(inventory, key=getcount)
[('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]

最后 
operator
 相关的信息对应如下:
OperationSyntaxFunction
Additiona + badd(a, b)
Concatenationseq1 + seq2concat(seq1, seq2)
Containment Testobj in seqcontains(seq, obj)
Divisiona / bdiv(a, b) (without future.division)
Divisiona / btruediv(a, b) (with future.division)
Divisiona // bfloordiv(a, b)
Bitwise Anda & band_(a, b)
Bitwise Exclusive Ora ^ bxor(a, b)
Bitwise Inversion~ ainvert(a)
Bitwise Ora bor_(a, b)
Exponentiationa ** bpow(a, b)
Identitya is bis_(a, b)
Identitya is not bis_not(a, b)
Indexed Assignmentobj[k] = vsetitem(obj, k, v)
Indexed Deletiondel obj[k]delitem(obj, k)
Indexingobj[k]getitem(obj, k)
Left Shifta << blshift(a, b)
Moduloa % bmod(a, b)
Multiplicationa * bmul(a, b)
Negation (Arithmetic)- aneg(a)
Negation (Logical)not anot_(a)
Positive+ apos(a)
Right Shifta >> brshift(a, b)
Sequence Repetitionseq * irepeat(seq, i)
Slice Assignmentseq[i:j] = valuessetitem(seq, slice(i, j), values)
Slice Deletiondel seq[i:j]delitem(seq, slice(i, j))
Slicingseq[i:j]getitem(seq, slice(i, j))
String Formattings % objmod(s, obj)
Subtractiona - bsub(a, b)
Truth Testobjtruth(obj)
Orderinga < blt(a, b)
Orderinga <= ble(a, b)
Equalitya == beq(a, b)
Differencea != bne(a, b)
Orderinga >= bge(a, b)
Orderinga > bgt(a, b)
点滴积累,点滴生活,丰富研究生生活!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: