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中等号“=”是赋值语句,可以把任意数据 ...
随机推荐
- Core Java之7种单例模式
初始化空 初始化创建 一把锁 两把锁 大专栏 Core Java之7种单例模式"headerlink" title="静态内部类">静态内部类 静态加载 ...
- C++走向远洋——66(十五周阅读程序)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- 基本类型和引用类型的值 [重温JavaScript基础(一)]
前言: JavaScript 的变量与其他语言的变量有很大区别.JavaScript 变量松散类型的本质,决定了它只是在特定时间用于保存特定值的一个名字而已.由于不存在定义某个变量必须要保存何种数据类 ...
- IdentityServer4迁移至3.x版本注意问题详解
前言 之前有一位购买我课程的童鞋利用最新的IdentityServer4版本即对应.NET Core 3.x,发布到生产环境在学习,结果出了一些问题,此前我并未过多关注IdentityServer4升 ...
- 课题:html5图像羽化(不规则区域羽化,feather,html5羽化)
下午搜索了一堆相关文章,没有找到符合要求的. 对一张图片应用不规则区域的羽化,该怎么做呢? 首先去查了下 羽化的原理,然而没有什么用, 然后就开始从表现层去研究怎么模拟? idea 1: blur滤镜 ...
- Eclipse与MyEclipse的联系和区别
Eclipse与MyEclipse的联系和区别 Eclipse 是一个IDE(Integrated Developing Environment),而这个IDE是允许安装第三方开发的插件来使自身的功 ...
- Educational Codeforces Round 83 (Rated for Div. 2)A--C
题意:给出一个边数为n的等边多边形,问是否可以变成m的等边多边形.条件是同一个中心,共用原顶点. 解析:直接n%m==0即可,这样就是平分了.签到题没得说了. #include<iostream ...
- Web架构之Nginx基础配置
目录 1.Nginx 虚拟主机 1.1.基于域名的虚拟主机 1.2.基于端口的虚拟主机 1.3.基于IP的虚拟主机 2.Nginx include 3.Nginx 日志配置 3.1.访问日志 3.2. ...
- 基于 HTML + WebGL 结合 23D 的疫情地图实时大屏 PC 版
前言 2019年12月以来,湖北省武汉市陆续发现了多例肺炎病例,现已证实为一种新型冠状病毒感染引起的急性呼吸道传染病并蔓延全国,肺炎疫情牵动人心,人们每天起来第一件事变成了关注疫情进展,期望这场天灾早 ...
- model进阶
本节目录 一 QuerySet 二 中介模型 三 查询优化 四 extra 五 整体插入 一 QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMI ...