代码块
运行的一个单元就叫代码块
所有的文件都基于代码块运行
程序在文件里写 运行程序就要运行文件
一个文件就是一个代码块
交互命令(cmd窗口)中一行就是一个代码块
id:内存地址 print之后是一个虚拟的id地址
== 和 is
== 判断两个对象的值是否相同
lst1 = [1,2,3]
lst2= [1,2,3]
lst1 == lst2 true 内容是相同的
lst1 is lst2 False 是两个不同的数据
is 身份运算 判断两个对象的内存地址是否相同
代码块的驻留 缓存机制
目的 都是提高性能 节省性能空间
在python中 默认会把数字 字符串 布尔值进行缓存
好处: 不用重复创建字符串 节省性能空间
针对对象: int str bool 空tuple
int范围 任意数字
str范围 几乎所有str 如果str×数字以后字符超过20 False
数据类型的相互转化 补充:
int bool str 三者可以互相转化
bool 可以与所有的数据类型进行转换
所有为空的数据类型转为bool都为False
0 '' [] () None 都为False
str转list 用split分割
list转str 用join 前提是list里内容全部是str
str转tuple partition
tuple转str 用join 之后还可以转化成列表
list转tuple 谁转化谁 就把谁包起来
fromkeys:
dic = dict.fromkeys([1,2,3],'太白')
print(dic)
dic = {1:'太白',2:'太白',3:'太白'}
如果tuple中只有单个元素且没有逗号 则类型是元素本身的类型
如果value是一个可变的数据类型 那么在内存中key占用的是一个地址 后来的值代替先来的值
集合 set
其实就是一种特殊的字典 所有的key对应的value都是None 留下的所有的key就是集合
创建空集合的唯一办法 调用set函数
s = set()
创建带元素的集合
s = {1,2,3}
从可迭代对象中创建集合 (list str tuple dict)
s = set(1,2,3)
增删改 (集合是无序的 不能使用查的操作)
增 add 如果元素存在 不做任何动作
删 pop 依次从集合中随即删除一个元素 如果集合为空 报错
discard 从集合中删除指定元素 如果不存在 什么都不做
remove 从集合中删除指定元素 如果不存在就报错
clear 请空集合
集合常用四大操作
并集 |
交集&
差集-
对称差 ^
改 update 用二者的并集更新当前集合
difference_update 用二者的差集更新当前集合
intersection_update 用二者的交集更新当前集合
symmtric_difference_update 用二者的对称差 更新当前集合
判断功能
isdisjiont 判断两个集合是否没有交集
issubset 判断当前集合是否是后者的子集
issuperset 判断后者是否是当前集合的子集
集合的使用场景
1.判断一个元素是否在指定的范围之内
2.方便数学上的集合操作
3.对序列数据类型中的重复元素进行去除(去重):
lst = [1,2,3,4,4,4,4,4,5,5,5,6,6,7,7,7,8,5]
s = set(lst) 转换成集合 直接去重
lst = list(s) 去重完毕后重新转化为列表