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中等号“=”是赋值语句,可以把任意数据 ...
随机推荐
- History of AI
人工智能的历史源远流长.在古代的神话传说中,技艺高超的工匠可以制作人造人,并为其赋予智能或意识.[1]现代意义上的AI始于古典哲学家用机械符号处理的观点解释人类思考过程的尝试.20世纪40年代基于抽象 ...
- arm-eabi-addr2line工具跟踪Android调用堆栈
使用arm-eabi-addr2line工具跟踪Android调用堆栈作者:liangshengyang转自:http://www.linuxidc.com/Linux/2011-01/31803.h ...
- Mybatis: 插件及分页
Mybatis采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的). Mybatis支持对Executor.StatementHa ...
- C++走向远洋——60(项目四、立体类族共有的抽象类)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- springmvc两种配置方法
基于配置文件xml方式, 配置springmvc步骤: 1.在pom文件中引入jar包: <!--导入springmvc的jar包--> <dependency> <gr ...
- py基础之列表生成式
列表生成式就是用一句语句生成一个列表,格式基本是:x for i in L下面是使用for循环迭代dict而生成的一个复杂表达式,将输出后的字符串保存为html文档可以生成一个表格d = {'adam ...
- 原型模式故事链(3)--JS的数据类型、以及区别、区分、转化
上一章--原型链讲解:传送门:https://segmentfault.com/a/11... 在上一章讲解原型链时提到了:所有的引用类型都有一个_proto_属性,称之为隐式原型.那么引用类型是什么 ...
- Linux进程操作记录
关于Gunicorn如何终止进程: 1.用进程树显示主进程PID: pstree -ap | grep gunicorn 2.如果有daemon进程无法用kill -9删除(可能是因为daemon屏蔽 ...
- 前端开发--vue开发部分报错指南
前期开发过程中 [Vue warn]: Error in render: "TypeError: Cannot read property '0' of undefined". 解 ...
- SuperBenchmarker一个用.NET编写的压测工具
0x01 前言 在这之前想必大家对ab(http)与abs(https)也有一些了解,我们今天不去看ab和abs,SuperBenchmarker(sb.exe)是一个压测工具,他是一个受Apache ...