变量是记录状态
字符串
数字
元组
字典
列表
查看变量的id:------------id(name)
可变不可变看看id号是否可以改变,可变类型就是id号不变
不可变类型:会改变id号的就是不可变类型
可变类型
列表,字典
不可变类型
字符串 , 数字, 元组
字典的key值不变,value可变
访问顺序
1.顺序访问:字符串, 列表, 元组
2.映射:字典
3.直接访问:数字
字典查询速度比列表快(字典无顺序)
存放元素个数
容器类型: 列表, 元组, 字典
集合 set
存放必须是不同元素组成,(集合有去重的功能)
无序
集合中必须是不可变类型
set (常用的指令)
s.pop()-------------------删除(随机删除)
s.add()
s.copy()
s.clear()
s.remove('s')----------------------指定删除 (不存在的会报错)
s.discard('sb')----------------------指定删除(不存在不会报错)
转换问题
列表可以转集合
集合转列表(存在顺序问题,如果要转化会之前的列表)
求两个的集合的交集 第一个集合(p_s) 第二个集合(l_s)
( p_s.intersection(l_s))
等同于( p_s&l_s) & == and
求并集合
p_s.union(l_s)
p_s|(l_s)
求差集
p_s.difference(l_s)
p_s-l_s
求交叉补集
a集合和b集合 合到一块
减去a和b共有的部分
p_s.symmetic_difference(l_s)
p_s^l_s
更新集合
p_s = p_s - l_s
等同于p_s.difference_update(l_s)
判断两个集合的关系
def issubset
s1 <= s2
判断s1是s2的子集
-------------------------------------
issuperset 不、判断是父集
s2.issuperset(s1)
s1是s2的父集
s1 = {1,2}
s2 = {2,3}
print(s1.isdisjoint(s2))
s = frozemset(‘hello') 集合无add和pop
集合是定义不可变集合
想要去重复(不考虑顺序)
name = ['alex', 'alex' ,'wupeiqi']
s = set(name)
name = list(s)-----------------------恢复成列表
字符串格式化
%s %位置,s字符串类型-------------------可以接收一切
print里面是加号拼接
%d -----------------只接收一个数字
打印浮点数
%f -----------------------------接收浮点数,小数,默认保留6位数
%2f ----------------------------保留两位小数(四舍五入)
打印(显示百分号)
tp1 = ’ print(%2f%%‘ %99.97)
format 不一一对应会报错
format可以使用索引
tp1 = ’ i am{2},age{1},{0}.format('seven', '18', 'alex')
format 传字典要加两给*号(即为 **)
传列表是一个*号
format里所要的{ }小于引入的列表或者字典的元素是可以的,但是引入的值要大于列表或者字典的元素就不行,会报错
def
要注释解释自己的函数的作用,方便他人观看
return X 返回一个结果——————————类似y的作用
函数是为了解决某个特定的功能
def————————定义一个函数
def test(x)
‘’‘
y = 2x + 1 ----------整体功能注释
param x : 整型数字
return: 返回计算结果
’‘’
函数名加上小括号就是运行
函数运行时至上而下
memory---------内存
disk ---------------硬盘
函数特点
代码重复使用
保持一致性,易维护
可扩展性
过程就是没有返回值的函数
没有返回值就是None
形参 变量
实参 --------具体数值
函数一遇到return就会马上结束
下面的其他return不会执行
位置差数, 关键字
关键字参数位置无需一一对应但是(多,缺,都不行)
位置参数位置必须需要一一对应但是(多,缺,都不行)
位置参数必须要在关键字参数左边
还有一个值被多次赋值也会报错
默认参数可以被覆盖
引用列表(*), 引用字典(**)