day3
1.字典:无序的--无下标;格式是:{"key":" value"," key":"value"... }可多级字典嵌套,字典套字典,字典套列表or元组等
1)查
#1.这种方法必须是确定有key:value,否则会报错
print(info["stu1101"])
#2.不管有没有key:value,都不会报错
print(info.get("stu1103"))
2)改
info["stu1101"] = "武藤兰" #若stu1101不存在则自动添加到字典内,存在则修改
3)删
del info["stu1101"]
#del不是列表和字典的方法,python内置的一种通用方法,想删那什么就删什么
info.pop("stu1101")
#必须指定key
info.popitem()
#随机删除
info = {"stu1101":"TengLan Wu",
"stu1102":"Longze Luola",
"stu1103":"XiaoZe Maliya"}
print("stu1103" in info) #判断key-value是否存在字典中,py3.x只能这么写,而py2.x的写法是info.has_key("1103")
info.update(info2)
#字典更新;看info2与info的key是否有交叉:有,则用info2的value覆盖info的;没,则增添
av_catalog.setdefault("taiwang",{"www.baidu.com":[1,2]})
#查看是否有大陆这key,有就无视;没则添加该key-value
info.item()
#把字典转为变量
c = dict.fromkeys([6,7,8])
#创建新字典,与dict字典怎样毫无关系
c = dict.fromkeys([6,7,8],[1,{"name":"Francis"},444])
#3个key共享一个内存地址,相当于浅copy,只要其中一个key的value值已改,其他key的都改
for i in info:
print(i,info[i])
#若只有i,在字典中,打印的只有key
#打印字典的key和value
for k,v in info.items():
print(k,v)
print("-----------------------")
for i in info:
print(i,info[i])
#下一种比上一种更为高效,因为info.items()是把字典转化为列表,一旦数据量一多,则将GG
pass为什么都不做,相当于占位符
2.集合--也是无序,作用:
1)去重---列表变集合
list = set([2,4,7,3,4,67,4])
2)关系测试
list_1 = set([1,4,5,7,3,6,7,9]) list_2 = set([2,6,0,66,22,8,4]) print(list_1,list_2) #交集 print(list.intersection(list_2)) print(list_1 & list_2) #并集 print(list_1.union(list_2)) print(list_1 | list_2) #差集 print(list_1.difference(list_2)) #1有,2没有的 print(list_1 - list_2) #子/ 父集 list_3 = set([1,3,7]) print(list_3.issubset(list_1)) #3是1的子集 print(list_1.issuperset(list_3)) #1是3的父集 #对称差集 print(list_1.symmetric_difference(list_2)) #合并1和2都没有的 print(list_1 ^ list_2)
集合其他参数用法:
list_4 = set([5,6,8]) print(list_3.isdisjoint(list_4)) #判断3和4是否没有交集 list_1.add(999) #只能添加一项元素 list_1.update([888,777,555]) #添加多项 list_1.pop() #随机删,不可指定 list_1.remove(999) #删 list_1.discard(123456) #与remove的区别在于,remove若删除的不存在,则会报错,而discard不会
3.对文件的操作
data = open("yesterday",encoding = "utf-8").read()
'''
打开文件yesterday,因为window的文件编码是gbk,而文件打开时默认用的是windows的文件编码,,因而在python中打开,想让它没有乱码,这得告诉它要以utf-8的形式打开
在没有.read()的情况下,对data,称为文件的巨柄--也就是文件的内存对象--之后可对文件再进行读,写等操作
若有.read(),则只可对文件进行读,当然,如果没有.read()文件是看不到的,因为它在内存中,若要看,我们还得取出来
'''
#系统在读文件时,是有光标的,当到结尾是,这时光标是在内容的末尾,若对文件进行2次print,则只会显示一次的内容,因为光标在末尾,并不会自己回去
data = open("yesterday","a",encoding = "utf-8")
#a = append 追加;r读;w写
#r+ 读写;w+ 写读;a+追加读;rb 二进制文件,以二进制去读这文件,后面不用加编码,encoding = "utf-8",rb用在网络传输,py3.x只能用二进制传输,常用r+
#其中a是创建文件yesterday,若有与之相同命名的,则把它覆盖
data.write("内容")
#对于a,w;写入内容,当然,若只有a或w,则不能执行r特有的print(data.read())
f.close() #文件执行完默认是关闭的,不过还是写上的好
print(f.readline()) #读一行,每读完一行都会保存到内存中
print(f.readlines()) #把每行当一元素,以列表的形式打印出来
f.strip() #把每行后的空格和换行符去掉
line = line.replace("肆意的快乐等我享受","肆意的快乐等Chubo_Lin享受")
#字符串内字符的替代
f.tell() # 按字符来计数,打印出当前光标的位置
f.seek() #把光标回到...位置,重头开始,按字符计算;tty和终端设备文件是移不回去的;在linux上,即使是一个终端设备,他也会认为你是一个文件
f.encoding() #文件的编码类型
f.seekable() #文件光标是否可移
f.readable() #判断文件是否可读
f.flush() #刷新内部缓存区,在写文件时,其实是先写入缓存内,当缓存满时,才会把缓存内的东西一起写入到硬盘内,而系统是在缓存满的时候再刷新,这时,才写入硬盘,也才可看到写入的东西
sys.stdout.write() #标准输出在屏幕上,默认不会换行
f.trancate() #截断,重头开始截

浙公网安备 33010602011771号