集合的使用
主要作用:去重,把一个列表变成集合,自动去重
关系测试,测试两组数据之前交集,差集,并集关系
list_1=[1,2,3,5,7,8,3,2,9]
list_1=set(list_1) #转为集合
print(list_1,type(list_1))
list_2=set([2,8,4,1,0,8,6,3])
print(list_1.intersection(list_2)) #求两者的交集
print(list_1.union(list_2))#并集
print(list_2.difference(list_1))#差集
print(list_1.difference(list_2))
print(list_1.issubset(list_2)) #判断1 是否是2的子集
print(list_1.issuperset(list_2))#判断1是否是2 的父集
list_3=set([1,5,9])
print(list_3.issubset(list_1))
print(list_1.issuperset(list_3))#测试3中的元素是否都在1中
#对称差集
print(list_1.symmetric_difference(list_2)) #1,2中两者互不相交的元素
list_4=set([2,3,7])
print(list_3.isdisjoint(list_4))#3,4没有相交的元素
#数学上的符号集
print(list_1&list_2)#交集
print(list_1|list_2)#并集
print(list_1-list_2)#差集
print(list_1^list_2)#对称差集
list_1.add(999)#t添加
list_1.update('11','22','33')#多项添加
list_1.remove('1')#删除
print(len(list_1))#求集合的长度
list_1 in list_2 #list——1是否是(不是)list2的成员
list_1 not in list_2
list_1.pop()#随机删
list_1.discard('333')#删除列表中不存在的元素不报错,也不会返回列表
文件
:
data 是一个内容,吧文件从硬盘上读出来,打开之后在内存里存起来一个类似的对象后续操作以对象来操作
data =open("yes",encoding="utf-8").read()
print(data)
f=open("yes",encoding="utf-8").read()
data=f.read()#可多次进行同一个文件的读取
data2=f.read()
打开,读,写文件
f=open("yestday2",'a',encoding="utf-8")#文件句柄 encoding="utf-8"打开文件的编码方式指定
#a= append 追加 如果没有a,则内容只能在文件中写一遍,随即覆盖
f.write("\n what are you doing?")
data=f.read() #一次性读所有
print('----read------',data)
f.close()
循环打印:
'''
f=open("yestday2",'r',encoding="utf-8") #文件句柄 encoding="utf-8"打开文件的编码方式指定
print(f.readline())#每一次读一行
for i in range (5):
print(f.readline()) #循环读取几行
for line in f.readlines():
print(line) #循环列表的每个元素,,如果b不需要空格和换行, print(line.strip)
'''
#low loop
for index,line in enumerate(f.readlines()): #打印前十行
if index == 3 :
print('-------分割线--------')
continue
print(line.strip())
#high bige
count =0
for line in f:
if count== 3:
print('-------分割线--------')
count+=1
continue
print(line) #效率高
'''
f.XXX的一些方法
f=open("yestday2",'r',encoding="utf-8")#文件句柄 encoding="utf-8"打开文件的编码方式指定
f.tell()#把现在所在的文件句柄所指的指针的位置打印出来
#print(f.read(5)) #指定读取的字符个数
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell()) #
f.seek(0) #返回指定的哪个地方
print(f.tell())
print(f.encoding)
f.fileno()#返回文件句柄案例的编号,操作系统会有一个专门的接口,Python内部维护
f.isatty()#终端设备
f.readable()#判断文件是否可读
以写的模式打开这个文件,然后写完一行,默认写到硬盘里,但是他不一定写到硬盘里,如果写完突然断电,有可能就没写进去,它还在缓存里,缓存有一个大小,只要达到这个大小,然后一次性写到硬盘里
f.flush()#刷新,数据要求实时一致性,不要求缓存,直接到硬盘,强制刷新
#进度条显示
import sys ,time
for i in range (20):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(0.1)
truncate()的应用
f=open("yestday2",'',encoding="utf-8")#文件句柄
f.truncate() #()内空则清空文件
f.truncate(10)#截取10支付截断
关于读写的有关方式
#实现读写
f=open("yest2",'r+',encoding="utf-8")#文件句柄
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell())
f.write("-------------")
print(f.readline())
#实现写读
#文件写入,从中间插入,后面则进行了覆盖,不会有改动,在后面写入
f=open("yest2",'w+',encoding="utf-8")#文件句柄
f.write("..--------------1----------\n")
f.write("..--------------1----------\n")
f.write("..--------------1----------\n")
f.write("..--------------1----------\n")
print(f.tell())
f.seek(10)
f.tell()
f.write("-------------")
print(f.readline())
f=open("yest2",'w+',encoding="utf-8")#文件句柄 追加读写
f=open("yest2",'rb')#文件句柄 二进制文件 读取不需要encoding 一般在网络传输(3。0只能用二进制)时用到
f=open("yest2",'wb')#文件是二进制编码的
f.write("hello\/".encode())
f.close()
文件修改:
将文件yes中的“多样性考虑”,修改为“多元化考虑”,然后保存到新建的yes-2的文件中
f = open("yes","r",encoding="utf=8")
f_new=open("yes-2.nak","w",encoding="utf-8")
for line in f:
if "多样性考虑" in line:
line=line.replace("多样性考虑","多元化考虑")
f_new.write(line)
f.close()
f_new.close()
实现 shell sed 替换功能
import sys
f = open("yes","r",encoding="utf=8")
f_new=open("yes-2.nak","w",encoding="utf-8")
#实现shell sed 替换功能
find_str=sys.argv[1]
replace_str=sys.argv[2]
for line in f:
if find_str in line:
line=line.replace(find_str,replace_str)
f_new.write(line)
f.close()
f_new.close()
with语句:
为了避免打开文件后忘记关闭,可以通过管理上下文
with open (‘log’,’r’)as f:
……….
Python2.7 后with支持同时对多个文件的上下文管理
with open(‘log1’) as obj1,open (‘log2’) as obj2:
…..
当with代码块执行完毕是,内部会自动关闭并释放文件资源
with open ("yes","r",encoding="utf-8") as f :
for line in f :
print(line)
字符编码与转码
GBK转换为UTF-8:
首先通过编码【decode】转换为Unicode编码
然后通过解码【encode】转换为UTF-8编码
#声明文件编码是什么,特别是该文件编码方式是gbk时
#-*coding:gbk
import sys
print(sys.getdefaultencoding())
s="金海岸" #现在的字符串默认是unicode
print(s.encode("gbk"))
print(s.encode("utf-8"))
print(s.encode("utf-8").decode("utf-8").encode("gb2312"))