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]

 

全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务