Python中包含大量的数值类型,他们中的大部分与其他编程语言保持一致,因此学习他们就显得尤为容易了。现在我将完整的Python数据类型总结如下,以供大家参考:
- 整数和浮点对象
- 复数对象
- 小数:固定精度对象
- 分数:有理数对象
- 集合:带有数值计算的集合体
- 布尔值:真和假
- 内置函数和模块:round、math、random等
- 表达式、八进制、二进制等
- 第三方扩展:向量、库、可视化、作图等
下面我将就常用的数值类型为大家做具体的总结。
数值字面量
- 整数:Python3 中将Python2.X的长整型和整形合二为一,他支持内存空间允许的无限精度
- 浮点型:浮点型的标志就是小数点.或者科学技术标志e或E,浮点型在标准CPython中采用C语言的“双精度”来实现,其精度与用来构建Python编辑器的C编译器所给定的精度一致。
- 十六进制数:0x或0X开头,后面接0-9或A-F或a-f。
- 八进制数:0O或0o开头(数字0+字母o),后面接0-7。
- 二进制数:0b或0B开头,后面接0-1。
- 复数:Python中复数字面量用实部+虚部的方式表示,虚部以j或J结尾,如3+4j等。
Python常见的运算符
常见运算符的总结
运算符的优先级
上表中从上往下运算符优先级依次增加,即:
()
>[]
>**
> ~
>-
(取负)>/
//
>%
>*
>+
-
...
括号的优先级最高,在复杂的表达式中,建议增加括号以避免混淆。
数字的实际应用
变量与表达式
- 变量在第一次被赋值时创建
- 变量在表达式使用之前,必须已被赋值(创建)
- 变量不需要提前声明
各种除法方式的比较
经典除法
在Python2.X中,用/
表示。对于整数操作会省去小数部分,但对于浮点数则会保留小数部分。但Python3中,/
已经变为真除法。Python3中无经典除法。
真除法
在Python3中,用/
表示真除法,即最后的结果是一个浮点数。
整除法
用//
表示,也称为向下取整除法。即算出结果后舍去小数部分,仅仅保留整数部分。注意,向下取整除法≠截断除法。对于正数而言,向下取整即舍去小数部分,可以看做截断。但是对于负数而言,向下取整不等于截断。如-5 // 2 = -3 ≠ -2,截断除法则为-2。
进制转换
-
oct()
函数:将十进制转换为八进制 -
hex()
函数:将十进制转换为十六进制 -
bin()
函数:将十进制转换为二进制 -
int(num, n)
函数:可将字符串从n进制的num转换成十进制,如int('0xabc', 16)
其他内置数值工具
内置函数
pow(x, n) #x的n次方
abs(x), sum((1,2,3,4)) #绝对值和求和
min(1, 2, 3), max(1, 2, 3) #求最大最小值
math模块
import math
math.pi, math.e #常数pi和e
math.sin #三角函数
math.sqrt(n) #开方
math.floor(x) #向下取整,floor(2.30)=2, floor(-2.30)=-3
math.trunc(x) #截断,trunc(2.3)=2, trunc(-2.3)=-2
random模块
import random
random.random() #随机生成0-1的随机数
random.randint(x, y) #在x~y之间随机生成一个整数
random.choice([list]) #随机在列表list中选择一项
random.shuffle([list]) #随机打乱列表中的元素
小数类型(Decimal)
小数类型的功能与浮点数很接近,但是小数有固定的位数和小数点,因此,小数可以看做固定精度的浮点数。
小数的创建
#浮点数的计算缺乏精确性,这是因为用来存储数值的空间有限,例如0.1+0.1+0.1-0.3应该等于0,但是用浮点数计算的结果却不等于0,用小数可以完美的解决这个问题
0.1 + 0.1 + 0.1 -0.3
#输出:5.551115123125783e-17
from decimal import Decimal #使用小数之前需要先导入模块
Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')
#输出:Decimal('0.0')
#可以直接使用浮点数创建小数,但是有时候会产生默认且庞大的小数位数
设置全局小数精度
import decimal
decimal.getcontext().prec = 4 #设置精度(小数位数)
分数类型
分数与小数类似,可以用来处理浮点数类型的不精确性。它显式的保持了一个分子和一个分母。
import fractions
x = fractions.Fraction(1, 4)
y = fractions.Fraction(1, 2)
x + y #输出Fraction(4, 3)