python学习手册(第五版)第5章节知识点汇总

第五章—数值类型

  • 整数、浮点数、除法与截断、小数、bool、分数
  • 运算优先级
  • 集合
  • 数值转换

一:整数、浮点数/小数、除法与截断、分数

1、整数

python3中整数是单独的一种类型,一般整数和长整数合二为一,支持无限精度

2、浮点数/小数

支持16位小数,要求精度时可以使用round()、格式化(不建议超过16位精度)、math.ceil、math.floor、超过16位使用decimal

from decimal import Decimal

Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')  

Decimal('0.0')

decimal.getcontext().prec = 4 ,设定全局小数值精度保留4位小数,再运行上面代码结果就会发生变化

为避免非截断行为影响python2.X得程序,math.trunc()可对小数截断,而只得到整数

>>> math.floor(2.5)
2
>>> math.floor(-2.5)
-3
>>> math.trunc(3.5)
3
>>> math.trunc(-3.5)
-3

3、除法

在python3.X中,/总是执行真除法,//执行向下取整法

>>> 5 / 2, 5 / -2
(2.5, -2.5)
>>> 5 //2, 5 // -2
(2, -3)
>>> 5 / 2.0 , 5 / -2.0
(2.5, -2.5)
>>> 5 // 2.0, 5 // -2.0
(2.0, -3.0)

4、分数

使用fraction模块表示分数

>>> x = Fraction(1, 3)
>>> y = Fraction(4, 6)
>>> x
Fraction(1, 3)
>>> y
Fraction(2, 3)
>>> print(x)
1/3
>>> print(y)
2/3
>>> x +y
Fraction(1, 1)

同样可以使用decimal模块确实精度

>>> decimal.getcontext().prec = 3
>>> decimal.Decimal(1) / decimal.Decimal(3)

Decimal('0.333')

二:运算优先级

运算优先级顺序如下表,从上到下优先级逐渐增高

yield x生成器函数send协议
lambda args: expression创建匿名函数
x if y else z三元选择(y为真x才被计算)
x or y逻辑或
x and y 逻辑与
not x逻辑非
x in y , x not in y成员关系
x is y, x is not y对象一次性测试
x < y, x <= y, x > y , x >= y大小比较,集合的子集和超集
x == y , x != y

值等价性运算符

x | y按位或,集合并集
x^ y按位异或,集合对称差集
x& y 

按位与集合交集

x << y, x >> y将x左移或右移y位
x+y

加、拼接

x - y 减法、集合差集
x *  y乘法、重复
x % y

求余数、格式化

 x / y , x // y真除法、向下取整除法
 - x, +x 

取正, 取负

~x

按位非(取反码)

x ** y 幂运算
x[i]

索引

x[i:j:k]分片
x(...)调用(函数、方法、类)
x.attr属性引用
(...)元组、表达式、生成器表达式
[...]列表、列表推导
{...}字典、集合,集合与字典推导

混合运算遵循运算符优先级:

  1. 运算优先级顺序如上表,从上到下优先级逐渐增高
  2. 同一行表达式在分组的时候通常按照从左到右(除了幂运算,它是从右向左组合的,还有比较运算)

括号分组子表达式

括号分组超越python的优先级规则,python会先计属圆括号内的表达式,然后再计算整个表达式

混合类型向上转换

python先将操作的对象转换成其中最复杂的操作数的类型,然后再对同类型的操作数运算,前提是,只适用于数值类型

三:集合

上一篇提到过集合时可变类型,但既不是序列也不是映射,且其中的元素必须时可 哈希的即不可变的值,所以存储复合值的话元组成了最佳选择;同时集合本身可变即集合中不能包含集合,如果需要再另一个集合中储存集合,可以调用内置函数frozenset,frozenset会创建一个不可变的集合,该集合不可修改,并且可以嵌套到其他集合

集合创建

set([....})

>>> set([1, 2, 3])
{1, 2, 3}
>>> set('spam')
{'p', 's', 'a', 'm'}
>>> S = {'s', 'p', 'a', 'm'}
>>> S.add('alot')
>>> S
{'s', 'alot', 'a', 'm', 'p'}
>>> S.add(('ing', 'ing'))
>>> S
{'s', 'alot', 'a', ('ing', 'ing'), 'm', 'p'}
>>> # 'ing ing' is a song on 163music

强调一下,集合是无序的

四:数值转换

otc()十进制转换位八进制
hex()十进制转换位十六进制
bin()十进制转换位二进制
int()将字符串转换为整数
0o/ 0 O八进制
0x/ 0X十六进制
0b/ 0B二进制

其他内置工具:pow(),abs(),sum()........

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值