Python 常用模块系列:
- [Python] 常用模块(1):内建模块 – random & datetime
- [Python] 常用模块(2):内建模块 – re 以及正则表达式
- [Python] 常用模块(3):内建模块 – math & itertools(本文)
- [Python] 常用模块(4):NumPy 上
- [Python] 常用模块(4):NumPy 中
- [Python] 常用模块(4):NumPy 下
- [Python] 常用模块(5):pandas 1
- [Python] 常用模块(5):pandas 2
- [Python] 常用模块(5):pandas 3
- [Python] 常用模块(5):pandas 4
- [Python] 常用模块(5):pandas 5
- [Python] 常用模块(5):pandas 6
- [Python] 常用模块(5):pandas 7
- [Python] 常用模块(5):pandas 8
- [Python] 常用模块(5):pandas 9
math 模块
math
模块与数学运算有关。
数论与表示函数
- math.ceil(x):返回大于或者等于 x 的最小整数。
>>> math.ceil(1.1)
2
- math.floor(x):返回小于或者等于 x 的最大整数。
>>> math.floor(2.9)
2
- math.isnan(x):如果 x 是
NaN
(不是数字),则返回True
,否则返回False
。
幂函数和指数对数
- math.exp(x):返回 e 次 x 幂,其中 e = 2.718281… 是自然对数的基数
- math.log(x[, base]):使用一个参数,返回 x 的自然对数(底为 e );使用两个参数,返回给定的 base 的对数 x ,计算为 log(x)/log(base) 。
- math.log2(x):返回 x 以2为底的对数,这通常比 log(x, 2) 更准确。
- math.log10(x):返回 x 底为10的对数,这通常比 log(x, 10) 更准确。
- math.sqrt(x):返回 x 的平方根。
三角函数
math.sin(x):返回 x 弧度的正弦值。
math.cos(x):返回 x 弧度的余弦值。
math.tan(x):返回 x 弧度的正切值。
常数
- math.pi:数学常数 π = 3.141592…,精确到可用精度。
- math.e:数学常数 e = 2.718281…,精确到可用精度。
- math.inf:浮点正无穷大。
- math.nan:浮点“非数字”(NaN)值。
itertools 模块
这个模块里函数都与迭代有关。
无穷迭代器
这些迭代器一旦生成,可以无限迭代下去。注意,迭代器需要用 next()
生成。
- itertools.count(start[, step]):创建一个迭代器,它从 start 值开始,返回均匀间隔的值。
>>> iter = itertools.count(10, 2)
>>> next(iter)
10
>>> next(iter)
12
- itertools.cycle§:创建一个迭代器,返回 iterable 中所有元素并保存一个副本。当取完 iterable 中所有元素,返回副本中的所有元素。无限重复。
>>> itr = itertools.cycle("AB")
>>> next(itr)
'A'
>>> next(itr)
'B'
>>> next(itr)
'A'
- itertools.repeat(elem[, n]):创建一个迭代器,不断重复 elem 。除非设定参数 n ,否则将无限重复。
根据数列长度停止的迭代器
- itertools.accumulate(iterable[, func]):创建一个迭代器,返回累加和或其他二元函数的累加结果(通过可选参数 func 指定)。func 参数可以被设为 min() 最终得到一个最小值,或者设为 max() 最终得到一个最大值,或设为 operator.mul() 最终得到一个乘积。
>>> data = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]
>>> list(accumulate(data, operator.mul)) # 乘积
[3, 12, 72, 144, 144, 1296, 0, 0, 0, 0]
>>> list(accumulate(data, max)) # 取最大数
[3, 4, 6, 6, 6, 9, 9, 9, 9, 9]
- itertools.chain(*iterables):创建一个迭代器,它首先返回第一个可迭代对象中所有元素,接着返回下一个可迭代对象中所有元素,直到耗尽所有可迭代对象中的元素。可将多个序列处理为单个序列。
>>> itr = itertools.chain("AB", "CD")
>>> next(itr)
'A'
>>> next(itr)
'B'
>>> next(itr)
'C'
>>> next(itr)
'D'