Python中的数值类型总结

本文参考书:《Learning Python》中文版——《Python 学习手册》第四版


Python中包含大量的数值类型,他们中的大部分与其他编程语言保持一致,因此学习他们就显得尤为容易了。现在我将完整的Python数据类型总结如下,以供大家参考:

  • 整数和浮点对象
  • 复数对象
  • 小数:固定精度对象
  • 分数:有理数对象
  • 集合:带有数值计算的集合体
  • 布尔值:真和假
  • 内置函数和模块:round、math、random等
  • 表达式、八进制、二进制等
  • 第三方扩展:向量、库、可视化、作图等

下面我将就常用的数值类型为大家做具体的总结。

数值字面量

  1. 整数:Python3 中将Python2.X的长整型和整形合二为一,他支持内存空间允许的无限精度
  2. 浮点型:浮点型的标志就是小数点.或者科学技术标志e或E,浮点型在标准CPython中采用C语言的“双精度”来实现,其精度与用来构建Python编辑器的C编译器所给定的精度一致。
  3. 十六进制数:0x或0X开头,后面接0-9或A-F或a-f。
  4. 八进制数:0O或0o开头(数字0+字母o),后面接0-7。
  5. 二进制数:0b或0B开头,后面接0-1。
  6. 复数:Python中复数字面量用实部+虚部的方式表示,虚部以j或J结尾,如3+4j等。

Python常见的运算符

常见运算符的总结

运算符 描述
lambda args: expression 创建匿名函数
x in y, x not in y 判断成员关系(可迭代对象、集合)
x is y, x is not y 测试对象内存地址是否一致,严格意义上的等价性
==, != 判断值等价性
` `
^ 按位异或、集合的对称差集
& 按位与、集合交集
x << y, x >> y 将x左移或右移y位
% 取余
// 整除
~ 按位非(取反码)
** 幂运算(指数运算)
( ) 元组、表达式、生成式表达式
[ ] 列表
{ } 字典、集合

运算符的优先级

上表中从上往下运算符优先级依次增加,即:

()>[]>**> ~>-(取负)>/ // >%>*>+ -...

括号的优先级最高,在复杂的表达式中,建议增加括号以避免混淆。

数字的实际应用

变量与表达式

  • 变量在第一次被赋值时创建
  • 变量在表达式使用之前,必须已被赋值(创建)
  • 变量不需要提前声明

各种除法方式的比较

经典除法

在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)
posted @ 2020-03-30 20:57  海淀区小吴同学  阅读(735)  评论(0编辑  收藏  举报