Python 数字函数
math / cmath(复数计算)
但是得先导入才能使用
>>> import math
>>> dir(math)
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
>>>
.ceil()
# 向上取整
.floor()
# 向下取整
fabs()
# 取绝对值
abs() 是一个内置函数,而 fabs() 在 math 模块中定义的。
fabs() 函数只适用于 float 和 integer 类型,而 abs() 也适用于复数。
.log(x[, base])
# 取对数,默认底数为e
>>> math.log(16)
2.772588722239781
>>> math.log(16,2)
4.0
round()
描述
round() 方法返回浮点数x的四舍五入值。
语法
以下是 round() 方法的语法:
round(x[,n])
#!/usr/bin/python
print "round(80.23456, 2) : ", round(80.23456, 2)
print "round(100.000056, 3) : ", round(100.000056, 3)
print "round(-100.000056, 3) : ", round(-100.000056, 3)
# 结果
round(80.23456, 2) : 80.23
round(100.000056, 3) : 100.0
round(-100.000056, 3) : -100.0
max(x,y,z)
>>> a='1,2,3,4'
>>> type(a) #类型为字符串
<type 'str'>
>>> max(a) #max 返回了最大值
'4'
>>> a=[1,2,3,4]
>>> type(a) #类型是列表
<type 'list'>
>>> max(a) #max函数也返回了最大值
4
>>> a=[(1,2),(2,3),(3,4)]
>>> max(a)
#按照元素里面元组的第一个元素的排列顺序,输出最大值(如果第一个元素相同,则比较第二个元素,
输出最大值)据推理是按ascii码进行排序的。
>>>(3, 4)
>>> a=[('a',1),('A',1)]
>>> max(a)
('a', 1)
>>> a=[(1,3),(2,2),(3,1)]
#列表里面的元素都由元组构成,元组都由数字组成,输出最大值
>>> max(a)
(3, 1)
>>> a={1:2,2:2,3:1,4:'aa'}
#比较字典里面的最大值,会输出最大的键值
>>> max(a)
4
max(iterable, *[, default=obj, key=func]) -> value max(arg1, arg2, *args, *[, key=func]) -> value
第一个参数为一个迭代器,key值是作为一个函数来指定比较的对象。
lst = [
{'name': 'egon', 'price': 100},
{'name': 'rdw', 'price': 666},
{'name': 'zat', 'price': 1}
]
ret = max(lst, key=lambda dic: dic['name'])
# 结果 {'name': 'zat', 'price': 1}
从迭代器list中每传入一个值 {'name': 'egon', 'price': 100} ,将该值传给匿名函数中的dic,用匿名函数进行处理,返回dic['name']
再看一个例子。
d = {'a': [1,3], 'b': [3,2], 'c': [2,1]}
b1 = list(d.values()).index(max(d.values(),key = lambda x: x[0]))
b2 = list(d.values()).index(max(d.values(),key = lambda x: x[1]))
这里的字典中key值分别对应的是一个列表。
list(d.values()) 先返回字典中所有值。然后对该列表进行索引。
在max中传入一个可迭代对象d.values(),对每次传入的 [1,3]/[3,2]/[2,1]进行处理。
每次传入的值先给到lambda中的x,进行x[0]或x[1]处理,对返回值进行比较。
所以,
b1值为1
b2值为0
分别指向[x,y]中x最大的和y最大的
d = {'a': [1,3], 'b': [3,2], 'c': [3,3]}
b = max(d.values(),key = lambda x: x[0])
max函数仅返回一个值,在有匿名函数的限制下,仅返回遇到的一个最大值,即返回[3,2]。
而不是像max原始的样子返回[3,3]