前几节了解了Python的不一样数据类型,有小伙伴会问,不一样的数据类型之间是否能够相互转换?确定是能够的,本篇博文主要记录数字类型的转换,其余类型的相互转换会在下几节记录,Here we go!python
经过前几节,咱们知道Python数字的数据类型有:整型、长整型、浮点型、和复数,它们之间是如何转换的呢?亦或者它们是如何转换为其余数据类型呢?先来看全部的方法:dom
int(x [,base ]) # 将 x 转换为一个整数 float(x ) # 将 x 转换到一个浮点数 complex(real [,imag ]) # 建立一个复数 str(x ) # 将对象 x 转换为字符串 repr(x ) # 将对象 x 转换为表达式字符串 eval(str ) # 用来计算在字符串中的有效Python表达式,并返回一个对象 tuple(s ) # 将序列 s 转换为一个元组 list(s ) # 将序列 s 转换为一个列表 chr(x ) # 将一个整数转换为一个字符 ord(x ) # 将一个字符转换为它的整数值 hex(x ) # 将一个整数转换为一个十六进制字符串 oct(x ) # 将一个整数转换为一个八进制字符串
bin(x) # 将一个整数转换为一个二进制字符串
咱们先来申明一个变量 num1 = 6 ,以后用 type() 函数查看其数据类型,任何数据类型均可以用此函数查看:ide
In [103]: num1 = 6 In [104]: type(num1) Out[104]: int
能够看到 num1 默认是 int 类型的,再来建立 num2 = 6.6 ,再次查看其数据类型:函数
In [105]: num2 = 6.6 In [106]: type(num2) Out[106]: float
能够看到 num2 默认是 float 类型的,也就是说,当在Python中建立一个整数的时候,默认的数据类型为 int ,建立一个小数的时候,默认的数据类型是 float ,建立完后想要修改其数据类型就要用到上面的类型转换函数了ui
In [110]: float(num1)
Out[110]: 6.0
In [114]: int(6.6) Out[114]: 6 In [115]: int(-5.5) Out[115]: -5 # int函数会把小数位所有抹去,保留整数部分
In [116]: complex(5,8) Out[116]: (5+8j) # complex(实部,虚部),虚部能够省略
In [117]: str(5) Out[117]: '5' In [118]: str(6.6) Out[118]: '6.6'
In [123]: s = 'print("Hello,world!")' In [124]: s Out[124]: 'print("Hello,world!")' In [125]: eval(s) Hello,world! # 能够看到将字符串执行了
In [130]: tuple([1,2,3])
Out[130]: (1, 2, 3)
In [139]: chr(56) Out[139]: '8' # 这里涉及ASC码的内容
In [142]: ord('8') Out[142]: 56 # 这里涉及ASC码的内容
In [143]: hex(15) Out[143]: '0xf' # 十六进制的数以 0x 开头
In [144]: oct(20) Out[144]: '0o24' # 八进制以 0o 开头
In [145]: bin(5) Out[145]: '0b101' # 二进制以 0b 开头
提及数学方法,确定再也不是简单的加减乘除乘方等基础运算了,数学方法更可能是取绝对值、指数运算、对数运算、幂运算,开方运算以及三角函数等,这些方法涉及到的领域也是至关广阔,这部分也是很是重要的,每一个人都应该熟练应用,尤为是想要去作数据方面工做的小伙伴。spa
Python中大量的数学方法并无在内置函数中,而是在两个模块中,在使用数学方法以前,必须在Python程序中根据须要导入math模块或者cmath模块。math模块的对象主要是实数,cmath模块主要面向复数,两者包含的方法基本一致,根据实际使用需求导入便可,导入方法:code
import math
回车之后如何没有任何报错信息就证实导入成功了,关于模块的详细概念会在以后的一节专门讲到,这里就先导入使用,不去作太多的解释。orm
导入之后,能够查看其帮助信息,还记得 help() 函数吗:对象
In [146]: import math In [147]: help(math) Help on built-in module math: NAME math DESCRIPTION This module is always available. It provides access to the mathematical functions defined by the C standard. FUNCTIONS acos(...) acos(x) Return the arc cosine (measured in radians) of x. acosh(...) acosh(x) Return the inverse hyperbolic cosine of x. asin(...) asin(x) Return the arc sine (measured in radians) of x. -- More --
能够看到 math 模块的帮助信息很全很复杂,一页都展现不完(--- More ---),能够按空格健翻页或者回车键翻一行,Q键退出;若是只是想要快速查看其包含的方法,能够用 dir() 函数:blog
In [148]: dir(math) Out[148]: ['__doc__', '__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', 'trunc']
In [149]: import cmath In [150]: dir(cmath) Out[150]: ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh']
能够看到math模块和cmath模块都有大量的方法,而且两者方法基本上同样,接下来,以math模块为例,详细的介绍其包含的方法
想要查看模块里面具体方法的帮助信息时,能够用 help() 函数查看:
In [173]: help(math.exp) # 注意是 math.exp, 不是 math.exp() Help on built-in function exp in module math: exp(...) exp(x) Return e raised to the power of x.
注意:查看具体方法时,只写方法名称便可,不要加括号,不然会报错!
abs(x) # 返回数字的绝对值,如abs(-10) 返回 10 math.ceil(x) # 返回数字的上入整数,如math.ceil(4.1) 返回 5 cmp(x, y) # 若是 x < y 返回 -1, 若是 x == y 返回 0, 若是 x > y 返回 1 math.exp(x) # 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 math.fabs(x) # 返回数字的绝对值,如math.fabs(-10) 返回10.0 math.floor(x) # 返回数字的下舍整数,如math.floor(4.9)返回 4 math.log(x) # 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 math.log10(x) # 返回以10为基数的x的对数,如math.log10(100)返回 2.0 max(x1, x2,...) # 返回给定参数的最大值,参数能够为序列。 min(x1, x2,...) # 返回给定参数的最小值,参数能够为序列。 math.modf(x) # 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 math.pow(x, y) # x**y 运算后的值。 round(x [,n]) # 返回浮点数x的四舍五入值,如给出n值,则表明舍入到小数点后的位数。 math.sqrt(x) # 返回数字x的平方根
能够看到,上面有些方法是直接写出的,如 abs(x) ,而有一些方法前面有 math. ,如 math.exp(x),这实际上是有缘由的,直接写出的表示是系统内置函数,不用导入任何模块就可使用,而加前缀的表示这个方法是这个模块里面的,必须加前缀,否者会报错,任何模块里面的方法都要加上这个模块的前缀,例如:
In [159]: import math In [160]: exp(2) --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-160-840a487878a2> in <module> ----> 1 exp(2) NameError: name 'exp' is not defined # 不加前缀表示这个方法没有被定义 In [161]: math.exp(2) # 加上前缀就能够正常使用了 Out[161]: 7.38905609893065
上面的方法就不一一举例了,要注意 round(x) ,这个函数执行原理是:四舍六入五凑偶,小数位为5的时候要看前一位,前一位是偶数就舍弃,是奇数就进一
math.acos(x) # 返回x的反余弦弧度值。 math.asin(x) # 返回x的反正弦弧度值。 math.atan(x) # 返回x的反正切弧度值。 math.atan2(y, x) # 返回给定的 X 及 Y 坐标值的反正切值。 math.cos(x) # 返回x的弧度的余弦值。 math.hypot(x, y) # 返回欧几里德范数 math.sqrt(x*x + y*y)。 math.sin(x) # 返回的x弧度的正弦值。 math.tan(x) # 返回x弧度的正切值。 math.degrees(x) # 将弧度转换为角度,如math.degrees(math.pi/2) , 返回90.0 math.radians(x) # 将角度转换为弧度
能够看到涉及三角函数的方法都在 math 模块里面
math.pi # 数学常量 pi(圆周率,通常以π来表示) math.e # 数学常量 e,e即天然常数(天然常数)。
两个最多见的数字常量,圆周率 pi 和天然常数 e 也在 math 模块里面
In [164]: math.pi Out[164]: 3.141592653589793 In [165]: math.e Out[165]: 2.718281828459045
随机函数常做为随机数发生器使用,大量领域会用到随机数,Python的随机数基本上都在 random模块中,具体方法以下:
In [171]: import random In [172]: dir(random) Out[172]: ['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_BuiltinMethodType', '_MethodType', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_acos', '_ceil', '_cos', '_e', '_exp', '_inst', '_log', '_pi', '_random', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
其主要函数功能:
random.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]范围内。