Python中的数值类型总结
本文参考书:《Learning Python》中文版——《Python 学习手册》第四版
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常见的运算符
常见运算符的总结
| 运算符 | 描述 |
|---|---|
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)
Python中的数值类型总结的更多相关文章
- python基础之数值类型与序列类型
Hello大家好,我是python学习者小杨同学,已经学习python有一段时间,今天将之前学习过的内容整理一番,在这与大家分享与交流,现在开始我们的python基础知识之旅吧. 数值类型与序列类型 ...
- python中对象、类型和元类之间的关系
在python中对象.类型和元类构成了一个微妙的世界. 他们有在这个世界里和平共处,相辅相成.它们遵循着几条亘古不变的定律: 1.python中无处不对象 2.所有对象都有三种特性:id.类型.值 3 ...
- Python中内置数据类型list,tuple,dict,set的区别和用法
Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...
- Python 中的枚举类型~转
Python 中的枚举类型 摘要: 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期.月份.状态等. 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表 ...
- python 四种数值类型(int,long,float,complex)介绍
Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下. 数字数据 ...
- Python中的集合类型分类和集合类型操作符解析
集合类型 数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称作集合元素(set elements). Python把这个概念引入到它的集合类型对象里.集合对象是一组无 ...
- Python中的鸭子类型
今天,我们来聊一聊Python中的鸭子类型(duck typing). 编程语言具有类型概念,例如Python中有数字类型.字符串类型.布尔类型,或者更加复杂的结构,例如元组tuple.列表list. ...
- Python 中的鸭子类型和猴子补丁
原文链接: Python 中的鸭子类型和猴子补丁 大家好,我是老王. Python 开发者可能都听说过鸭子类型和猴子补丁这两个词,即使没听过,也大概率写过相关的代码,只不过并不了解其背后的技术要点是这 ...
- Python中的基本类型简介
1.变量 变量不仅可以是数字,还可以是任意数据类型 命名规范:变量是用一个变量名表示,变量名必须是大小写英文.数字和下划线_的组合,且不能用数字开头 python中等号“=”是赋值语句,可以把任意数据 ...
随机推荐
- MySQL安装和常用命令
一.安装MySQL groupadd mysqluseradd -r -g mysql mysqlgroups mysqlfind / -name mysql | xargs rm -rfwget h ...
- acedCommandS 实现pedit命令
acedCommandS(RTSTR, _T("PEDIT"), RTSTR, _T("M"), R ...
- 微信小程序采坑之scroll-view
当设置了scroll-y为true之后,纵向是没有问题的,会出现滚动条. Android上一切都是那么的祥和, ios上你会发现如果你scroll-view里面的东西超过横向的宽度时,就会隐藏了. 也 ...
- 达拉草201771010105《面向对象程序设计(java)》第十二周学习总结
达拉草201771010105<面向对象程序设计(java)>第十二周学习总结 第一部分:理论知识 Java的抽象窗口工具箱(AbstractWindow Toolkit,AWT)包含在j ...
- 30分钟学会Objective-C
注: 本文首发于我的个人博客:https://evilpan.com/2019/04/05/objc-basics/ 请原谅我的标题党.但是如果你有其他语言的学习经验,要学习Objective-C的语 ...
- 20170813-CSRF 跨站请求伪造
CSRF CSRF是Cross Site Request Forgery的缩写,翻译过来就是跨站请求伪造. 跨站:顾名思义,就是从一个网站到另一个网站. 请求:即HTTP请求. 伪造:在这里可以理解为 ...
- Python线性优化基础讲解~
目前,各组织正在利用数据科学和机器学习来解决各种业务问题.为了创造一个真正的业务影响,如何弥合数据科学管道和业务决策管道之间的差距显得尤为重要. 数据科学管道的结果往往是数据中的预测.模式和洞察(通常 ...
- ubunto python + vnstat 限制每天流量使用 使用iptables
上次想使用 iptables 转发80 端口,试了一段时间,没有成功.哪位知道是什么原因,还麻烦告诉我. 这次使用 iptables 禁用 80 443 出站,经过试验可以成功. 通过 iptable ...
- arm 添加 ftp server 之 bftpd
本来想装vsftp 结果装上以后执行报错 Segmentation fault , 换到几个 其它的小型ftp server 软件 ,试了 Stupid-FTPd,不能用. bftpd 可以使用,Ti ...
- 为什么java内部类访问局部变量必须声明为final?
https://blog.csdn.net/z55887/article/details/49229491 先抛出让我疑惑了很久的一个问题 编程时,在线程中使用局部变量时候经常编译器会提示:局部变量必 ...