一. 集合
#集合(set)的作用: (1)去重; (2)关系测试
#集合也是无序的
list_1 = [1,4,5,6,4,6]
list_1 = set(list_1) #列表转成集合自动去除重复的元素
list_2 = set ([2,6,0,66,22])
print(list_1,list_2)
list_1.intersection(list_2) #取出交集
#print(list_1.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)) #差集(list_1中有的而list_2中没有的)
print(list_1 - list_2) # 差集in list_1 but not in list_2
print(list_1.issubset(list_2)) #子集
print(list_1.issuperset(list_2)) #父集
#print(list_1.symmetric_difference(list_2))#对称差集(去掉两个集合中都有的元素
print(list_1 ^ list_2) #对称差集(幂的运算符号)
#判断是否无交集
list_3 =set([1,3,7])
list_4 = set([2,5,8])
print(list_3.isdisjoint(list_4))
list_3 =set([1,3,7,444])
list_4 = set([2,5,8])
#list_3.add(110) #添加一项
#list_3.update([444,555,666]) #添加多项
print(list_3.remove(444)) #删除一项 无返回值
print(list_3.discard(3)) #删除一项 无返回值
#print(list_3.pop()) #任意删除,无法指定
#print(len(list_3)) #list_3的长度
print(list_3)
二. 文件操作
注: 文件以“读”模式打开,则无法写入内容;
文件以“写”模式打开,则无法读取内容;在写入的时候会冲掉源文件的内容,(切记小心),如果源文件不存在的话,会新建一个文件。
#读取文件 f = open("yesterday.txt") #文件句柄 #data = f.read() #读全部 #data = f.readline() #一行一行的读 #for i in range(3): # print(f.readline()) #print(data) #往文件中写入内容 #f.write("金木水火土\n") #\换行,不然就写在同一行了 #f.write("宫商角徵羽") #f.write("\n宫商角徵羽....") #追加内容 #f.close() #for line in f.readlines(): #适用于小文件 # print(line.strip()) #打印某一行 for index,line in enumerate(f.readlines()): if index == 3: print(20*'-') continue print(line.strip())
运行结果:
冷冷
清清
凄凄
--------------------
戚戚
f = open("yesterday.txt")
count = 0
for line in f:
if count ==3:
print('--------------')
count += 1
continue
print(line) #内存里每次只存储一行,读一行删除一行,不占内存(推荐此方法,忘了readlines)
count += 1
运行结果:
冷冷
清清
凄凄
--------------
戚戚
当读取文件的时候,一次性读完,类似于指针的一个东东就停在了文件的末尾,我们再一次执行“读”操作的时候,其实是读不到内容的,那么我们怎么在回到文件开头重新读取内容呢???
f = open("yesterday.txt")
print(f.tell()) #查看句柄的位置
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell())
#f.seek(0) #回到开始的地方
f.seek(10)
print(f.readline())
其他用法:
f = open("yesterday.txt")
print(f.encoding) #cp936 查看编码格式
print(f.name) #打印文件名字
f = open("yesterday.txt",'w') f.write() f.flush() #刷新
#简单进度条演示 import sys import time for i in range(20): sys.stdout.write("#") #stdout是标准输出 sys.stdout.flush() #刷新 time.sleep(0.4) #控制出现的进度间隔(单位是秒)
truncate
- 英 [trʌŋ'keɪt; 'trʌŋ-]
- 美 [trʌŋ'ket]
adj. 截短的;被删节的
vt. 把…截短;缩短;使成平面
过去式 truncated过去分词 truncated现在分词 truncating
f = open("yesterday.txt",'r+') #r+ 表示读写
print(f.readline())
print(f.readline())
print(f.readline())
f.write("xiaolaizi") #他是写在文件最后的
print(f.readline())
print(f.readline())
f = open("yesterday.txt",'w+') #w+ 表示写读 (没啥用)
#f = open("yesterday.txt",'a+') #a+ 表示追加读写
f.write("xiaolaizi") #他是写在文件最后的
f.seek(0)
print(f.readline())
#f = open("yesterday.txt",'rb') #二进制文件 用在网络传输:视频文件
f = open("yesterday.txt",'wb') #二进制写
f.write("xiaolaizi\n".encode()) #要进行编码才能写入,(字符串转成二进制)