day7笔记 集合,字典,文件操作
1.数据类型,补充方法
# v1 = [] # v1 = list()
# v2 = () # v2 = tuple()
# v3 = {} # v3 =dict()
# v4 = set() #{}默认是dict
# print(type(v4))
2.数据类型 set 集合
# 集合特性:元素无序,无重复
# 1.add 添加元素到集合中,如果该元素已经存在,不会重复创建。
names = {'龙哥','海角','老狗','成绩','小江','小高'}
names.add('龙哥')
print(names)
2.clear 清空。
3.copy , 浅拷贝
4. difference 差集。
names = {1,2,3,4,5,6}
boys = {1,7,8}
val = names.difference(boys) # names中存在,boys中不存在数据{2, 3, 4, 5, 6},boys可以为列表
print(val)
val =boys.difference(names)# boys中存在,names中不存在数据
print(val)
后面加上update就是直接赋值给boys,
boys.difference_update(names) # boys中存在,names中不存在数据 print(boys)
names.difference_update(boys) # boys中存在,names中不存在数据 print(names)
3. 对称差集,把两个集合里面互不存在的数取出来。
names = {1,2,3,4,5,6,7}
boys = {1,2,4,8,9}
val = names.symmetric_difference(boys)
print(val)
names.symmetric_difference_update(boys)
print(names)
输出:{3, 5, 6, 7, 8, 9}
4. discard在集合中删除指定值
name = {1,2,3,4,5,7,6,}
var = name.discard(6)
print(name)
5. 求交集
name = {1,2,3,4,5,6}
num = {1,2,3,4,7,8,9}
val = name.intersection(num)
print(val)
val = num.intersection(name)
print(val)
#{1, 2, 3, 4}
name.intersection_update(num) print(name)
6. 并集
#{1, 2, 3, 4, 6, 7, 8} name = {1,4,2,3} num = {2,4,7,8,6} val = name.union(num) print(val)
7.判断是否无交集
name = {1,4,2,3}
num = {7,8,6}
val = name.isdisjoint(num)
print(val)
8. 子集父集
name = {1 ,2,3,4,5}
num = {1,2,3}
#是否是子集
val = num.issubset(name)
print(val)
#是否是父集
val = name.issuperset(num)
print(val)
9. 随机删除一个集合元素
name = {2,3,4,5}
val = name.pop()
print(val)
remove,如果删除的数找不到,会报错
name.remove(6) print(name)
discard,如果删除的数找不到,不会报错
name.discard(6) print(name)
10. 更新
name = {1,2,3,4,5}
num = {1,2,3,7,8}
num.update(name)
print(num)
#{1, 2, 3, 4, 5, 7, 8}
for 循环:
names = {'龙哥','海角','老狗','成绩','小江','小高'}
for item in names:
print(item)
print(len(names))
ps:集合元素不可变 ;不能是字典 列表,集合。
dict
1.clear , 清空
2.copy , 浅拷贝
3.fromkeys, 内部修改。
#{'k1': [678, 999], 'k2': [678, 999], 'k3': [678, 999]}
val = dict.fromkeys(['k1','k2','k3'],[])
val['k1'].append(678)
val['k2'].append(999)
print(val)
4.get,获取对应Key的 value值.得不到会输出None。
5.items,获取对应的键值对,多和for循环一起用,前面需要两个变量接收值。
6.keys,获取对应的key值,多和for循环一起用
7.pop,取出key对应的value值赋给ss,并删除key这个键值对,如果没有对应的key则赋给ss,默认值。
name = {"key1":1,"key2":2}
ss = name.pop("key","默认值")
print(ss)
8.popitem,随机取出一个键值对
name = {"key1":1,"key2":2}
ss,vv = name.popitem()
print(ss,vv)
9.setdefault,只能添加,不能修改
dic = {'k1':'v1','k2':'v2'}
dic.setdefault('k2','999')
print(dic)
#设置:添加,修改
dic['k2'] = 999
10.update,更新
dic = {'k1':'v1','k2':'v2'} # dict类的一个对象
dic.update({'k4':'v4','k2':'v5'})
print(dic)
文件操作
# 读取utf-8编码数据,【转换】成unicode(str)编码的数据
msg = open("文件路径",encoding="utf-8",mode="r") content = msg.read() msg.close print(content)#字符串类型
1.文件在硬盘上时,一定是:utf-8,gbk,..
2.rb , bytes,
3.r , 转换encoding = utf-8
obj = open('美女.txt',mode='r+',encoding='utf-8')
data = obj.read(1) # 读
# 情况一:
# obj.write('6') # 在最后继续写
# 情况二:
# obj.seek(1)
# obj.write('6') # 定位到指定位置
obj.close()
print(data)
操作文件三要素:
1. 路径:D:\美女模特空姐护士联系方式.txt
2. 编码:utf-8
3. 模式:
- rb
- r
- r+ *****
- r+b
- wb
- w
- w+
- w+b
- ab
- a
- a+
- a+b
功能:
obj = open(文件路径,mode='rb')
obj.read()
obj.write()
obj.seek() # 永远是字节,指定指针位置
obj.tell() # 读取当前指针的位置
obj.close()
obj.flush() #将内存中内容刷到硬盘
# obj.readline()
for line in obj: # 等价于 py2 obj.xreadlines()
print(line)
obj.readlines()
PS: 打开文件后,记着关闭文件
obj = open(文件路径,mode='rb')
xxxx
obj.close()
自动关闭
with open(文件路径,mode='rb') as obj:
obj.read()
# 代码执行完毕后,自动关闭文件
只读:
- open(文件路径,mode='rb')
- open(文件路径,mode='r',encoding='utf-8')
示例:
obj = open('D:\美女模特空姐护士联系方式.txt',encoding='utf-8',mode='r') content = obj.read() obj.close() print(content)
obj = open('D:\美女模特空姐护士联系方式.txt',mode='rb') content = obj.read() obj.close() print(content)
只写:
- open(文件路径,mode='wb')
- open(文件路径,mode='w',encoding='utf-8')
示例:
# obj = open('美女.txt',mode='w',encoding='utf-8')
# obj.write("海角-贾敏")
# obj.close()
# obj = open('美女.txt',mode='wb')
# obj.write("海角-贾敏22222".encode('utf-8'))
# obj.close()
只追加:
- open(文件路径,mode='ab')
- open(文件路径,mode='a',encoding='utf-8')
# obj = open('美女.txt',mode='a',encoding='utf-8')
# obj.write("小红")
# obj.close()
# obj = open('美女.txt',mode='ab')
# obj.write("龙哥".encode('utf-8'))
# obj.close()

浙公网安备 33010602011771号