python常用模块

math

import math

math.sin(0.5) #求0.5的正弦

math.pow(x, y) # x 的 y 次幂

math.sqrt(x) #x 的算术平方根,也就是正数的平方根

calendar

闰年判断

>>> calendar.isleap(2016)

True

>>> calendar.isleap(2015)

False

itertools

cycle()

无限迭代器 cycle('ABCD') --> A B C D A B C D ...

>>> import itertools
>>> x = 'Private Key'
>>> y = itertools.cycle(x)  #循环遍历序列中的元素
>>> for i in range(20):
	print(next(y), end=',')	
P,r,i,v,a,t,e, ,K,e,y,P,r,i,v,a,t,e, ,K,
>>> for i in range(5):
	print(next(y), end=',')	
e,y,P,r,i,

根据一个序列的值对另一个序列进行过滤的函数compress()

>>> x = range(1, 20)
>>> y = (1,0)*9+(1,)
>>> y
(1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
>>> list(itertools.compress(x, y))     #根据一个序列的值对另一个序列进行过滤
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

根据函数返回值对序列进行分组的函数groupby()

groupby(iterable[, keyfunc]) 按照keyfunc函数对序列每个元素执行后的结果分组(每个分组是一个迭代器), 返回这些分组的迭代器

>>> def group(v):
    if v>10:
        return 'greater than 10'
    elif v<5:
        return 'less than 5'
    else:
        return 'between 5 and 10'
>>> x = range(20)
>>> y = itertools.groupby(x, group)          #根据函数返回值对序列元素进行分组
>>> for k, v in y:
    print(k, ':', list(v))
less than 5 : [0, 1, 2, 3, 4]
between 5 and 10 : [5, 6, 7, 8, 9, 10]
greater than 10 : [11, 12, 13, 14, 15, 16, 17, 18, 19]

chain()接受一个可迭代对象列表作为输入,并返回一个迭代器,有效的屏蔽掉在多个容器中迭代细节。

>>> from itertools import chain
>>> a = [1, 2, 3, 4]
>>> b = ['x', 'y', 'z']
>>> for x in chain(a, b):
... print(x)
...
1
2
3
4
x
y
z
>>>

使用 chain() 的一个常见场景是当你想对不同的集合中所有元素执行某些操作的时候。
比如:

# Various working sets of items
active_items = set()
inactive_items = set()
# Iterate over all items
for item in chain(active_items, inactive_items):
# Process item

这种解决方案要比使用两个单独的循环更加优雅!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值