Python中的数值类型总结
海淀区小吴同学 人气:0
本文参考书:《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模块
```python
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模块
```python
import random
random.random() #随机生成0-1的随机数
random.randint(x, y) #在x~y之间随机生成一个整数
random.choice([list]) #随机在列表list中选择一项
random.shuffle([list]) #随机打乱列表中的元素
```
### 小数类型(Decimal)
小数类型的功能与浮点数很接近,但是小数有固定的位数和小数点,因此,小数可以看做固定精度的浮点数。
##### 小数的创建
```python
#浮点数的计算缺乏精确性,这是因为用来存储数值的空间有限,例如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')
#可以直接使用浮点数创建小数,但是有时候会产生默认且庞大的小数位数
```
##### 设置全局小数精度
```python
import decimal
decimal.getcontext().prec = 4 #设置精度(小数位数)
```
### 分数类型
分数与小数类似,可以用来处理浮点数类型的不精确性。它显式的保持了一个分子和一个分母。
```python
import fractions
x = fractions.Fraction(1, 4)
y = fractions.Fraction(1, 2)
x + y #输出Fraction(4, 3)
```
加载全部内容