前言

前几节了解了Python的不同数据类型,有小伙伴会问,不同的数据类型之间是否可以相互转换?肯定是可以的,本篇博文主要记录数字类型的转换,其他类型的相互转换会在下几节记录,Here we go!

一、Python数字类型转换

通过前几节,我们知道Python数字的数据类型有:整型、长整型、浮点型、和复数,它们之间是如何转换的呢?亦或者它们是如何转换为其他数据类型呢?先来看所有的方法:

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() 函数查看其数据类型,任何数据类型都可以用此函数查看:

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 ,创建完后想要修改其数据类型就要用到上面的类型转换函数了

In [110]: float(num1)
Out[110]: 6.0

int 转换为 float

In [114]: int(6.6)
Out[114]: 6 In [115]: int(-5.5)
Out[115]: -5 # int函数会把小数位全部抹去,保留整数部分

float 转换为 int

In [116]: complex(5,8)
Out[116]: (5+8j) # complex(实部,虚部),虚部可以省略

创建复数

In [117]: str(5)
Out[117]: '' 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]: '' # 这里涉及ASC码的内容

整数转换为字符

In [142]: ord('')
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 开头

整数转化为二进制

二、Python数学方法

说起数学方法,肯定不再是简单的加减乘除乘方等基础运算了,数学方法更多是取绝对值、指数运算、对数运算、幂运算,开方运算以及三角函数等,这些方法涉及到的领域也是相当广阔,这部分也是非常重要的,每个人都应该熟练应用,尤其是想要去做数据方面工作的小伙伴。

math模块和cmath模块

Python中大量的数学方法并没有在内置函数中,而是在两个模块中,在使用数学方法之前,必须在Python程序中根据需要导入math模块或者cmath模块。math模块的对象主要是实数,cmath模块主要面向复数,二者包含的方法基本一致,根据实际使用需求导入即可,导入方法:

import math

回车以后如何没有任何报错信息就证明导入成功了,关于模块的详细概念会在之后的一节专门讲到,这里就先导入使用,不去做太多的解释。

导入以后,可以查看其帮助信息,还记得 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() 函数:

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]范围内。

#8 Python数学方法的更多相关文章

  1. Python join() 方法与os.path.join()的区别

    Python join() 方法与os.path.join()的区别 pythonJoinos.path.join 今天工作中用到python的join方法,有点分不太清楚join() 方法与os.p ...

  2. (转)Python数学函数

    原文:https://www.cnblogs.com/lpl1/p/7793645.html PYTHON-基础-内置函数小结----------http://www.wklken.me/posts/ ...

  3. 1. Python 魔法方法

    Python 魔法方法 基础: 如果你想... 所以,你写... Python调用... 初始化一个实例 x = MyClass() x.__init__() 作为一个字符串的"官方&quo ...

  4. python数学工具(一)

    python  数学工具包括: 1.函数的逼近 1.1.回归 1.2.插值 2.凸优化3.积分4.符号数学 本文介绍函数的逼近的回归方法 1.作为基函数的单项式 对函数 的拟合 首先定义函数并且可视化 ...

  5. Python数学建模-01.新手必读

    Python 完全可以满足数学建模的需要. Python 是数学建模的最佳选择之一,而且在其它工作中也无所不能. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数学 ...

  6. Python数学建模-02.数据导入

    数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数据导入 ...

  7. Python swapcase()方法

    首先,要明白Python swapcase() 方法用于对字符串的大小写字母进行转换. 其次,了解swapcase()方法语法:str.swapcase() 返回值:返回大小写字母转换后生成的新字符串 ...

  8. python字符串方法的简单使用

    学习python字符串方法的使用,对书中列举的每种方法都做一个试用,将结果记录,方便以后查询. (1) s.capitalize() ;功能:返回字符串的的副本,并将首字母大写.使用如下: >& ...

  9. Python数学函数

    1.Python数学函数 1.abs(x):取绝对值,内建函数 2.math.ceil(x):向上取整,在math模块中 3.cmp(x,y):如果 x < y ,返回-1:如果 x == y ...

随机推荐

  1. Java 数组元素合并并去重

    public class TestList { public static void main(String[] args) { Set<Integer> set = new TreeSe ...

  2. java多线程系列10 阻塞队列模拟

    接下来的几篇博客会介绍下juc包下的相关数据结构 包含queue,list,map等 这篇文章主要模拟下阻塞队列. 下面是代码 import java.util.LinkedList; import ...

  3. font-smoothing使用后字体看起来会更清晰舒服

    CSS3里面加入了一个“-webkit-font-smoothing”属性. 这个属性可以使页面上的字体抗锯齿,使用后字体看起来会更清晰舒服. 加上之后就顿时感觉页面小清晰了. 淘宝也在用哦! 它有三 ...

  4. 数据库-mysql命令

    1.项目过程:概要设计阶段 —— 架构师 任务:技术选型(网络/语言/框架).项目结构(子系统/模块).数据结构(数据特点/内容) 项目中存储数据的方式: (1)服务器内存:存取速度快:非永久存储.容 ...

  5. spring web参数传递

    spring boot 参数相关 ******************************************   @RequestParam 这个注解用来绑定单个请求数据,既可以是url中的 ...

  6. SAS语言结构

    SAS程序用于访问.管理.分析和展现数据.其基础组成部分是 DATA步和PROC步,PROC步又称为SAS过程.一个SAS程序可包含以 任意顺序组合的多个DATA步和多个PROC步. DATA步通常用 ...

  7. python repr()和str()

    两者功能差不多,都是把对象转为字符串表示形式,但是也有区别,repr()之后再eval()可以转为原型,但str()只能保证大多数,不能100% 其中主要的 差别在与 字符串对象本身,比如 a = ' ...

  8. sqrt()函数对素数判断的优化

    素数是只有1和本身能整除的整数.所以在求素数的时候,要将素数与1到素数本身中间的所有整数都相除,看是否有整除的数,如果有,那肯定不是素数了.但是从算法上考虑,为了减少重复量,开平方后面的数就不用相除了 ...

  9. Unity面试题2

    1.Animation.CrossFade命令作用是(C) A 动画消失 B动画转换 C东环的淡入为其他动画 2.Application.loadedLevel命令为(A) A加载关卡 B异步加载关卡 ...

  10. MyBatis 源码分析 - 内置数据源

    1.简介 本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑.搞懂这些数据源的实现,可使大家对数据源有更深入的认识.同时在配置这些数据源时,也会更清楚每种属性的意义和用途.因此,如果大家想知其 ...