Python基础之数字(Number)超级详解
Python中有6个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典),每种类型有其固有的属性和方法,学会这六种数据类型及基础的方法,很多代码基本上都能看得懂,很多功能也都能实现了。要是实现面向百度编程到面向自己编程的转变,必须搞搞清楚这六大数据类型的属性和方法。
标准的数据类型又分为可改变的数据类型和不可变的数据类型,数字、字符串、元组属于不可变类型;列表、字典、集合都属于可变类型。
什么是可变类型?在值改变的情况下, 内存地址(ID)不变, 证明改变的是原值即可变类型-->也叫不可 hash 类型
'''修改前'''ls = ['aaa', 'bbb', 'ccc']id(ls)#1744975906560'''修改后'''ls[0] = 'AAA'id(ls)#1744975906560
什么是不可变类型?在值改变的情况下, 内存地址也改变了, 证明这改变的值是产生的新值即原值不可变-->也叫可 hash 类型他们都是一个不可分割的整体
'''修改前'''
x = 'xiaowuge'
id(x)#1744975676080
'''修改后'''
x = "XiaoWuGe"
id(x)#1744996503344
本文将对其中的数字类型进行详解。
一、Python支持的数字类型
Python支持的数值类型有四种:整数(int)、浮点数(float)、复数(complex), 此外,布尔值(bool)属于整数的子类型。
1、整数类型
与数学中整数概念一致,共有4种进制表示:十进制,二进制,八进制和十六进制。默认情况,整数采用十进制,其它进制需要增加相应的引导符号,如下表所示。
进制种类 | 引导符号 | 描述 | 备注 |
十进制 | 无 | 默认情况 | |
二进制 | 0b 或 0B | 由字符0和1组成 | bin将一个整数转换为一个二进制字符串 bin(43):'0b101011' |
八进制 | 0o 或 0O | 由字符0到7组成 | oct(x) 将一个整数转换为一个八进制字符串 oct(43):'0o53' |
十六进制 | 0x 或 0X | 由字符0到9、a到f、A到F组成,不区分大小写 | hex(x) 将一个整数转换为一个十六进制字符串 hex(43):'0x2b' |
整数类型的取值范围在理论上没有限制,实际上受限制于运行Python程序的计算机内存大小。
2、布尔型
布尔型(bool),关键字True和False,分别表示真和假,他们的值是1和0,还可和数字相加。
True+True23*True31+True-False2
可以用内置函数type()来查询变量所指的对象类型
a, b, c, d = 13, 2.5, True, 5+4j
type(a),type(b),type(c),type(d)
(int, float, bool, complex)
3、浮点数类型
浮点数类型表示有小数点的数值,浮点数有两种表示方法:小数表示和科学计数法表示。整数具有无限的精度。浮点数通常使用C中的double来实现,有关你的程序运行所在机器上浮点数的精度和内部表示法可在 sys.float_info 中查看。
import sys
sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308,
min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
4、复数类型
表示数学中的复数,复数可以看作二元有序实数对(a, b),表示a + bj,其中,a是实数部分,b为虚数部分。在Python语言中,复数的虚数部分通过后缀 'J' 或 'j' 来表示。复数包含实部和虚部,分别以一个浮点数表示。要从一个复数 z 中提取这两个部分,可使用 z.real 和 z.imag。
#创建一个复数
complex(3, 4)
(3+4j)
#复数 c 的共轭
c = complex(3, 4)
c.conjugate()
(3-4j)
二、Pyhon支持的运算
1、运算操作概述
所有数字类型(复数除外)都支持下列运算(有关运算优先级,请参阅:运算符优先级):
Python提供了9个基本的数值运算操作符。这些操作符不需要引用标准或者第三方函数库,也叫内置操作符。
运算 | 结果: | 注释 | 完整文档 |
x + y | x 和 y 的和 | ||
x - y | x 和 y 的差 | ||
x * y | x 和 y 的乘积 | ||
x / y | x 和 y 的商 | ||
x // y | x 和 y 的商数,并取整 | (1) | |
x % y | x / y 的余数 | (2) | |
-x | x 取反 | ||
+x | x 不变 | ||
abs(x) | x 的绝对值或大小 | abs() | |
int(x) | 将 x 转换为整数 | (3)(6) | int() |
float(x) | 将 x 转换为浮点数 | (4)(6) | float() |
complex(re, im) | 一个带有实部 re 和虚部 im 的复数。im 默认为0。 | (6) | complex() |
c.conjugate() | 复数 c 的共轭 | ||
divmod(x, y) | (x // y, x % y) | (2) | divmod() |
pow(x, y) | x 的 y 次幂 | (5) | pow() |
x ** y | x 的 y 次幂 | (5) |
注释:
1)也称为整数除法。结果值是一个整数,但结果的类型不一定是 int。运算结果总是向负无穷的方向舍入: 1//2 为 0, (-1)//2 为 -1, 1//(-2) 为 -1 而 (-1)//(-2) 为 0。
2)不可用于复数。而应在适当条件下使用 abs() 转换为浮点数。
3)从浮点数转换为整数会被舍入或是像在C语言中一样被截断;请参阅math.floor() 和math.ceil()函数查看转换的完整定义。
4)float 也接受字符串 "nan" 和附带可选前缀 "+" 或 "-" 的 "inf" 分别表示非数字 (NaN) 以及正或负无穷。
5)Python 将 pow(0, 0) 和 0 ** 0 定义为1,这是编程语言的普遍做法。
6)接受的数字字面值包括数码 0 到 9 或任何等效的 Unicode 字符(具有 Nd 特征属性的代码点)。
注意:表中所有的二元数学操作符(+、-、*、/、//、%、**)都有与之对应的增强赋值操作符(+=、-=、*=、/=、//=、%=、**=)。即x op= y 等价于 x = x op y ,op 为二元数学操作符。