关关难过关关过 加油 第8天
作者:互联网
队列与堆栈
队列:先进先出FIFO
l=[ ]
l.append(11) [11]
l.append(22) [11,22]
l.append(33) [11,22,33]
l.pop(0) 11
l.pop(0) 22
l.pop(0) 33
堆栈: 先进后出LIFO
l=[ ]
l.append(11) [11]
l.append(22) [11,22]
l.append(33) [11,22,33]
l.pop(-1) 33
l.pop(-1) 22
l.pop(-1) 11
集合set
用途:去重 关系运算
1.集合去重无法保证顺序
2.只能针对不可变元素
定义方式:在{ }内用逗号分隔开多个元素,集合内的元素特点有三个
集合元素必须时不可变类型
集合内元素不能重复
集合内元素无序
s = {11,2.1,“XXX”, (1, 2, 3,)}
不能放字典,列表
s={11,11,11,11,22,33}
集合找重案例
pythons = [“tom”, “jack”, “alex”, “egon”, “lxx”]
linux = [“lili”, “sasa”, “egon”, “lxx”, “jay”]
l=[ ]
for name in pythons:
if name in linux:
l.append(name)
print(l)
集合去重案例
print(s)
RES=set(“hello”)
print(RES) #打印结果为{‘o’, ‘l’, ‘h’, ‘e’}
names=[“egon”,“lxx”,“LILI”,“egon”,“egon”]
print(set(names)) #{‘LILI’, ‘egon’, ‘lxx’}
rint(list(set(names))) # [‘lxx’, ‘LILI’, ‘egon’]
去重常用案例
students_info = [
{“name”: “nana”, “age”: 18, “gender”: “girl”},
{“name”: “dada”, “age”: 19, “gender”: “male”},
{“name”: “xiaoming”, “age”: 18, “gender”: “male”},
{“name”: “nana”, “age”: 18, “gender”: “girl”},
{“name”: “nana”, “age”: 18, “gender”: “girl”},
]
l=[ ]
for n in students_info:
if n not in l:
l.append(n)
print(l)
定义空集合
s=set( )
print(type(s)) #<class ‘set’>
集合常用操作的运算
pythons = [“tom”, “jack”, “alex”, “egon”, “lxx”]
linuxs = [“lili”, “sasa”, “egon”, “lxx”, “jay”]
交集:取两个集合的共同部分,即报名pythons又报名linux的学生
print(pythons&linuxs)
并集:两个集合并到一起的,所有学生的姓名
print(pythons|linuxs)
差集:一个集合减掉另外一个集合的共同部分
print(pythons-linuxs) 只学了python的学生姓名
print(linuxs-pythons) 只学了Linux的学生姓名
交叉补集/对称差集:两个集合相减,然后再并到一起,取没有同时学两门课的学生
res=pythons^linuxs 原理:res=(pythons-linuxs)|(linux-pythons)
父子集合:当一个集合完全包含了另外一个集合,改集合才能称爹
s1={1,2,3}
s2={1,2,3,4}
print(s2>=s1) 这种情况才能成立,比较的是包含关系
需要掌握的
s={1,2,3}
s.update({3,4,5}) #更新覆盖原集合,{1, 2, 3, 4, 5}
s.add(4) #s 往集合里面加值{1, 2, 3, 4}
s.remove(1) #删除集合的指定元素{2, 3},删除没有的元素会报错
s.discard(4) #删除集合的指定元素{2, 3}删除没有的元素不会报错
s.clear() #全部删除 set()
s.pop() #随机删除
s.copy #复制所有元素
s={1,2,3}
s1={4,5,6}
print(s.isdisjoint(s1)) #判断两个集合完全没有交集的集合,结果为True
总结:
存多个值
无序
集合内的元素不可变,集合本身可变类型
s={1,2,3}
print(id(s))
s.add(4)
print(id(s))
文件管理
什么是文件
文件是操作系统提供给用户或者应用程序操作硬盘的一种机制
为何要用文件
读写文件就是存取硬盘
应用程序: open()
操作系统: 打开文件
计算机硬件: 硬盘空间
一个操作系统文件对应一个硬盘空间
如何用文件
打开文件
读 / 写
关闭文件
open(r"a\a.txt",mode = “rt”, encoding = “UTF-8”) # encoding是指定字符编码表的意思
windowsx系统要在前面加个“r“取消”\“的意义
open("/a/b/c/d.txt") # linux操作系统文件路径是以根开头
f = open(r"a.txt",mode = “rt”, encoding = “UTF-8”)
1.告诉操作系统打开一个文件、
2.定义了一个变量值
f占用的是应用程序的内存空间对操作系统发请求,由操作系统调用去空间硬盘空间
f的值称为文件句柄,文件对象
对f的值发请求像是对操作系统打开的文件发请求
数据从硬盘调用到内存
res=f.read()
1.要么读文件要么写文件
print(res,type(res))
关闭文件:
f.close()
1.关闭操作系统的文件,f变量值还在应用程序里面占用这应用程序的内存,由pycharm软件的垃圾回收机制自动回收
注意操作系统不会自动关闭文件,会隔一段时间扫描一次文件
如果同时打开了多个文件关闭,达到上限后,其他文件就打不开了,会导致操作系统崩溃
print(f)
with语法:
with 被称为上下文管理(with会自动帮关文件)
f = open(r"a.txt",mode = “rt”,)
f1 = open(r"b.txt", mode=“rt”,)
with open(r"a.txt", mode=“rt”,)as f,
open(r"b.txt", mode=“rt”,) as f1:
res = f.read()
通过with运行文件可以打开多个文件,顺序是先打开啊a.txt,再打开b.txt
f.read()一次性读完全部文件内容
with open(r"a.txt",mode=“rt”,encoding = “UTF-8”)as f:
for line in f:
res=line.strip("\n").split("
标签:11,字符,文件,关关,集合,print,加油,pythons,难过 来源: https://blog.csdn.net/Yosigo_/article/details/111631133