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()........

你可能感兴趣的:(python学习手册(第五版)第5章节知识点汇总)