#8 Python数学方法
前几节了解了Python的不同数据类型,有小伙伴会问,不同的数据类型之间是否可以相互转换?肯定是可以的,本篇博文主要记录数字类型的转换,其他类型的相互转换会在下几节记录,Here we go!
一、Python数字类型转换
通过前几节,我们知道Python数字的数据类型有:整型、长整型、浮点型、和复数,它们之间是如何转换的呢?亦或者它们是如何转换为其他数据类型呢?先来看所有的方法:
1 | int(x [,base ]) # 将 x 转换为一个整数 |
我们先来申明一个变量num1=6
, 之后用type()
函数查看其数据类型,任何数据类型都可以用此函数查看:
1 | In [103]: num1 = 6 |
可以看到 num1 默认是 int 类型的,再来创建num2=6.6
,再次查看其数据类型:
1 | In [105]: num2 = 6.6 |
可以看到 num2 默认是 float 类型的,也就是说,当在Python中创建一个整数的时候,默认的数据类型为 int ,创建一个小数的时候,默认的数据类型是 float ,创建完后想要修改其数据类型就要用到上面的类型转换函数了
1 | # int --> float |
1 | # float --> int |
1 | # 创建复数 |
1 | 数字 --> 字符串 |
1 | # 字符串 --> 有效表达式 |
1 | # list --> tupe |
1 | # 整数 --> 字符 |
1 | # 字符 --> 整数 |
1 | # 整数 --> 十六进制 |
1 | # 整数 --> 八进制 |
1 | # 整数 --> 二进制 |
二、Python数学方法
说起数学方法,肯定不再是简单的加减乘除乘方等基础运算了,数学方法更多是取绝对值、指数运算、对数运算、幂运算,开方运算以及三角函数等,这些方法涉及到的领域也是相当广阔,这部分也是非常重要的,每个人都应该熟练应用,尤其是想要去做数据方面工作的小伙伴。
math模块和cmath模块
Python中大量的数学方法并没有在内置函数中,而是在两个模块中,在使用数学方法之前,必须在Python程序中根据需要导入math模块或者cmath模块。math模块的对象主要是实数,cmath模块主要面向复数,二者包含的方法基本一致,根据实际使用需求导入即可,导入方法:
1 | import math |
回车以后如何没有任何报错信息就证明导入成功了,关于模块的详细概念会在之后的一节专门讲到,这里就先导入使用,不去做太多的解释。
导入以后,可以查看其帮助信息,还记得 help() 函数吗:
1 | In [146]: import math |
可以看到 math 模块的帮助信息很全很复杂,一页都展示不完(--- More ---),可以按空格健翻页或者回车键翻一行,Q键退出;如果只是想要快速查看其包含的方法,可以用 dir() 函数:
1 | In [148]: dir(math) |
1 | In [149]: import cmath |
可以看到math模块和cmath模块都有大量的方法,并且二者方法基本上一样,接下来,以math模块为例,详细的介绍其包含的方法
想要查看模块里面具体方法的帮助信息时,可以用 help() 函数查看:
1 | In [173]: help(math.exp) # 注意是 math.exp, 不是 math.exp() |
注意:查看具体方法时,只写方法名称即可,不要加括号,否则会报错!
数学函数
1 | abs(x) # 返回数字的绝对值,如abs(-10) 返回 10 |
可以看到,上面有些方法是直接写出的,如 abs(x) ,而有一些方法前面有 math. ,如 math.exp(x),这其实是有原因的,直接写出的表示是系统内置函数,不用导入任何模块就可以使用,而加前缀的表示这个方法是这个模块里面的,必须加前缀,否者会报错,任何模块里面的方法都要加上这个模块的前缀,例如:
1 | In [159]: import math |
上面的方法就不一一举例了,要注意round(x)
,这个函数执行原理是:四舍六入五凑偶,小数位为5的时候要看前一位,前一位是偶数就舍弃,是奇数就进一
三角函数
1 | math.acos(x) # 返回x的反余弦弧度值。 |
可以看到涉及三角函数的方法都在 math 模块里面
数字常量
1 | math.pi # 数学常量 pi(圆周率,一般以π来表示) |
两个最常见的数字常量,圆周率 pi 和自然常数 e 也在 math 模块里面
1 | In [164]: math.pi |
随机数函数
随机函数常作为随机数发生器使用,大量领域会用到随机数,Python的随机数基本上都在 random模块中,具体方法如下:
1 | In [171]: import random |
其主要函数功能: 1
2
3
4
5
6random.choice(seq) # 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
random.randrange ([start,] stop [,step]) # 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1
random.random() # 随机生成下一个实数,它在[0,1)范围内。
random.seed([x]) # 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
random.shuffle(lst) # 将序列的所有元素随机排序
random.uniform(x, y) # 随机生成下一个实数,它在[x,y]范围内。