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()    #截断,重头开始截

  

 

posted @ 2018-11-23 01:00  Chubo_Lin  阅读(168)  评论(0)    收藏  举报