今日内容
了解:
队列:先存进去的数据先取出来
堆栈:先存进去的数据后取出来
一、集合:
======================================基本使用======================================
1、用途:去重、关系运算。
ps:其中集合去重无法保准顺序,并只能针对不可变元素去重。
2、定义方式:在{,}内用逗号隔开多个元素,集合内元素的特征有三个
(1)集合内元素必须是不可变元素
(2)集合内元素不能重复
(3)集合内元素无序
3、常用操作+内置的方法:
优先掌握的操作:
1、长度len
s1 = {1,2,3}
print(len(s1)) # 3
2、成员运算in和not in
s1 = {1,2,3}
print(3 in s1) # True
print(3 not in s1) # False
1、|并集(合集):两个集合并到一起
2、&交集:取两个集合的共同部分
3、-差集:一个集合减掉与另一个集合共同的部分
4、^对称差集(交叉补集):求两个集合互相减,然后再并到一起
5、==
6、父集:>,>= 当一个集合完全包含了另外一个集合,该集合才能称为爹
s1 = {1,2,3}
s2 = {4,5,6}
print(s1 >= s2) # False
print(s1.issuperset(s2))
7、子集:<,<=
print(s1 <= s2) # False
print(s1.issubset(s2))
举例:
pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}
list1 = pythons | linuxs # {'egon', 'yuanhao', 'wupeiqi', 'oldboy', 'biubiu', 'gangdan', 'alex'}
print(pythons.intersection(linuxs))
print(pythons.intersection_update(linuxs))
list2 = pythons & linuxs # {'wupeiqi', 'gangdan'}
print(pythons.union(linuxs))
list3 = pythons - linuxs # {'yuanhao', 'alex', 'egon', 'biubiu'}
print(pythons.difference(linuxs))
list4 = linuxs - pythons # {'oldboy'}
print(linuxs.difference(pythons))
list5 = pythons ^ linuxs # {'egon', 'oldboy', 'yuanhao', 'biubiu', 'alex'}
print(pythons.symmetric_difference(linuxs))
需要掌握的操作:
s1 = {1,2,3}
1、s1.update()
s1.update({3,4,5})
print(s1) # {1, 2, 3, 4, 5}
2、s1.add()
s1.add(4)
print(s1) # {1, 2, 3, 4}
3、删除
3.1 remove(3)
s1.remove(3)
print(s1) # {1, 2}
3.2 pop()
res = s1.pop() # 随机删除 返回删除的值
print(s1)
print(res)
3.3 discard()
s1.discard(444444) # 删除不存在的元素不会报错
print(s1) # {1, 2, 3}
3.4 clear()
s1.clear()
print(s1) # set()
4、copy
res = s1.copy()
print(res) # {1, 2, 3}
5、isdisjoint()
s1 = {1,2,3}
s2 = {4,5,6}
print(s1.isdisjoint(s2)) # True
======================================该类型总结====================================
存多个值
无序
集合类型本身是可变的,里面的元素是可迭代的(能被for循环)
二、文件处理
1、什么是文件
文件时操作系统提供给用户或者应用程序操作硬盘的一种机制
python中文件是对象
Linux文件:一切设备都可以看成是文件
文件的作用:把一些数据以文件的形式存储起来,文件由文件系统进行管理,当程序下一次执行的时候,通过文件系统快速找到对应的文件,而找到对应的数据,省时省力。
2、为何要用文件
读写文件 ---> 存取硬盘
应用程序: open()
操作系统: 打开文件
计算机硬件: 硬盘空间
3、如何用文件
1)打开文件
方式一:open
举例:open("文件路径(可以是绝对路径,也可以是相对路径)",mode:"打开文件的方式(rwa,tb),encoding="字符编码格式") #打开文件
可以将这个值做变量 f = open("文件路径(可以是绝对路径,也可以是相对路径)",mode:"打开文件的方式(rwa,tb),encoding="字符编码格式")
这时 f=值 叫做文件句柄/文件对象,可以对文件句柄做操作
f.close() #关闭文件,每次用open打开文件操作完之后都要记得关闭文件,不然耗费操作系统的资源,如果打开文件数量过多时会打不开。
方式二:with open
举例 with open("文件路径(可以是绝对路径,也可以是相对路径)",mode:"打开文件的方式(rwa,tb),encoding="字符编码格式") as f:
可以打开多个文件,用逗号隔开,如果打开文件数量多的话每个结尾可以加一个/,换行表示。
with(上下文管理),这个方式打开文件会在操作完文件之后自动关闭文件,无需手动关闭。
三、字符编码
1、储备知识:
运行python程序的三个步骤:python.py
1、先启动python解释器
2、解释器会将文本文件a.py内容由硬盘读入内存
3、解释器会解释执行刚刚读入内存的内容,识别python语法
2、什么是字符编码:
人类的字符 ----- 编码 -----> 数字
人类的字符 <----- 解码 ----- 数字
编码与解码的过程必须参照字符编码表
3、为何要学习字符编码:
为了解决运行python程序三个阶段中2、3阶段有可能出现的乱码问题
4、字符编码表发展史
一家独大:
ASCII:只能识别英文字符
8bit 对应一个英文字符 1byte = 8bit (byte:字节 bit:(二进制)位,比特)
天下大乱
GBK:能识别汉子与英文
用2Bytes对应一个字符
Shift-JIS:日文与英文
Euc -KR:韩文与英文
英文字符----->内存:ASCII格式的二进制----->硬盘:ASCII格式的二进制
中文字符、英文字符----->内存:gbk格式的二进制----->硬盘:gbk格式的二进制
日文字符、英文字符----->内存:shift-JIS格式的二进制----->硬盘:shift-JIS格式的二进制
万国字符----->内存:unicode格式的二进制----->硬盘:utf-8格式的二进制
分久必合
unicode:1、万国字符
2、兼容老的字符编码表
结论:
如何保证不乱码
1、编码与解码必须参照同一张字符编码表