一 集合
1.1 集合的定义
list_1 = [1, 2, 4, 7, 1 ,2] list_1 = set(list_1) print(list_1, type(list_1)) # {1, 2, 4, 7} <class 'set'> 集合是无序的 list_2 = set([2, 4, 78, 67]) print(list_1, list_2)
1.2 交集
print(list_1.intersection(list_2)) # {2, 4} 交集 or list_1 & list_2 print(list_1.isdisjoint(list_2)) # 交集为空 则 返回True
1.3 并集
print(list_1.union(list_2)) # {1, 2, 67, 4, 7, 78} 并集 list_1 | list_2
1.4 差集 对称差集
print(list_1.difference(list_2)) # {1, 7} 差集 list_1 - list_2 print(list_1.symmetric_difference(list_2))# {1, 67, 7, 78} 对称差集 list_1 ^ list
1.5 子集 父集
print(list_1.issubset(list_2)) # False 子集 list_1 <= list_2 print(list_1.issuperset(list_2)) # False 父集 list_1 >= list_2
1.6 添加
list_1 = {1, 2, 4, 7} list_1.add(56) print(list_1) # {56, 1, 2, 4, 7} list_1.update([56,'sam']) print(list_1) # {1, 2, 'sam', 4, 7, 56}
1.7 删除
list_1 = {1, 2, 4, 7} #1 list_1.remove(2) # 元素不存在就会报错 print(list_1) # {1, 4, 7} #2 list_1.pop() # 任意删除元素 #3 list_1.discard(7) # 删除一个元素,如果元素不存在,就返回空
1.8 长度
list_1 = {1, 2, 4, 7} print(len(list_1)) # 4
1.9 属于
ele = 1 print(ele in list_1) # True print(ele not in list_1) # False
1.10 复制
list_1 = {1, 2, 4, 7} list_3 = list_1.copy() print(list_3)
二 文件操作
文件yesterday在同级目录,内容为
越女采莲秋水畔,窄袖轻罗,暗露双金钏。照影摘花花似面,芳心只共丝争乱。
鸡尺溪头风浪晚,雾重烟轻,不见来时伴。隐隐歌声归棹远,离愁引着江南岸。”
一阵轻柔婉转的歌声,飘在烟水蒙蒙的湖面上。歌声发自一艘小船之中,船里五个少女和歌嘻笑,
荡舟采莲。她们唱的曲子是北宋大词人欧阳修所作的“蝶恋花”词,写的正是越女莲的情景,虽只寥六十字,
但季节、时辰、所在、景物以及越女的容貌、衣着、首饰、心情,无一不描绘得历历如见,下半阕更是写景中有叙事,
叙事中挟抒情,自近而远,余意不尽。欧阳修在江南为官日久,吴山越水,柔情密意,尽皆融入长短句中。
宋人不论达官贵人,或是里巷小民,无不以唱词为乐,是以柳永新词一出,有井水处皆歌,而江南春岸折柳,
秋湖采莲,随伴的往往便是欧词。
时当南宋理宗年间,地处嘉兴南湖。节近中秋,荷叶渐残,莲肉饱实。这一阵歌声传入湖边一个道姑耳中。
她在一排柳树下悄立已久,晚风拂动她杏黄色道袍的下摆,拂动她颈中所插拂尘的万缕柔丝,心头思潮起伏,
当真亦是“芳心只共丝争乱”。只听得歌声渐渐远去,唱的是欧阳修另一首“蝶恋花”词,一阵风吹来,
隐隐送来两句:“风月无暗换,旧游如梦空肠断……”歌声甫歇,便是一阵格格娇笑。
2.1 基本操作
data = open("yesterday", encoding="utf-8").read() print(type(data)) # <class 'str'> print(data)
结果:打印全部内容
越女采莲秋水畔,窄袖轻罗,暗露双金钏。照影摘花花似面,芳心只共丝争乱。
鸡尺溪头风浪晚,雾重烟轻,不见来时伴。隐隐歌声归棹远,离愁引着江南岸。”
一阵轻柔婉转的歌声,飘在烟水蒙蒙的湖面上。歌声发自一艘小船之中,船里五个少女和歌嘻笑,
荡舟采莲。她们唱的曲子是北宋大词人欧阳修所作的“蝶恋花”词,写的正是越女莲的情景,虽只寥六十字,
但季节、时辰、所在、景物以及越女的容貌、衣着、首饰、心情,无一不描绘得历历如见,下半阕更是写景中有叙事,
叙事中挟抒情,自近而远,余意不尽。欧阳修在江南为官日久,吴山越水,柔情密意,尽皆融入长短句中。
宋人不论达官贵人,或是里巷小民,无不以唱词为乐,是以柳永新词一出,有井水处皆歌,而江南春岸折柳,
秋湖采莲,随伴的往往便是欧词。
时当南宋理宗年间,地处嘉兴南湖。节近中秋,荷叶渐残,莲肉饱实。这一阵歌声传入湖边一个道姑耳中。
她在一排柳树下悄立已久,晚风拂动她杏黄色道袍的下摆,拂动她颈中所插拂尘的万缕柔丝,心头思潮起伏,
当真亦是“芳心只共丝争乱”。只听得歌声渐渐远去,唱的是欧阳修另一首“蝶恋花”词,一阵风吹来,
隐隐送来两句:“风月无暗换,旧游如梦空肠断……”歌声甫歇,便是一阵格格娇笑。
2.2 读取 r
f = open("yesterday",'r', encoding="utf-8") # 文件句柄, 相当于C的指针 r ---->读 data = f.read() # 读取全部,指针移动到最后 print(data) print("----------------------------------------------") data2 = f.read() # 指针后面没有内容了,被data读完了 print("data2:", data2) # data2: ---->返回空
2.3 写 w
f = open('yesterday2', 'w' ,encoding='utf-8') # 'w' ----》 创建一个文件,源文件被覆盖 f.write("我爱北京,\r\n") f.write(" i love you ") f.close()
结果: yesterday2 内容如下
我爱北京,
i love you
2.4 追加 a
f = open('yesterday2', 'a' ,encoding='utf-8') #'a' ----> 追加 , 但不能读 f.write('测试“a”:beijing') f.close()
结果:yesterday2 内容如下
我爱北京,
i love you 测试“a”:beijing
2.5 读取方法
f = open('yesterday', 'r', encoding='utf-8') print(f.readline()) # 读取第一行 一行一行的读 print(f.readline()) # 读取第二行 for i in range(3): print(f.readline()) # 读取前三行
data = f.readlines() # 返回列表, 元素为每一行的字符串 # 效率低 for line in f.readlines(): # 效率低,因为它把所有的文件内容都读取到内存 print(line.strip()) # 因为line的最右有换行符,使用strip, 打印的行与行之间就不会有空 # 效率高的循环 for line in f: #内存里只存一行 print(line.strip())
2.6 其它方法
print(f.tell()) # 打印句柄的位置 # 0 print(f.read(10)) # 读取10个字符串 #Somehow, i print(f.tell()) # 10 print(f.seek(0)) # 句柄回到起始位置 print(f.encoding) # 打印文件编码 utf-8 print(f.name) # 打印文件名字 yesterday print(f.readable()) # 判断文件是否可读 print(f.writable()) # 判断文件是否可写 file = open('yesterday2', 'w', encoding='utf-8') file.write('hello 1 \n') file.flush() # 把写入内存中的内容,刷入磁盘 #file.buffer # 案例 显示进度条 import sys, time for i in range(20): sys.stdout.write("#") sys.stdout.flush() # time.sleep(0.5) file3 = open('yesterday', 'r', encoding='utf-8') file3.truncate(20) # 从头开始截取 20个字符串
2.7 写读 读写
file = open('yesterday', 'r+', encoding='utf-8') # 'r+' ----> 以读,和追加的方式打开 file = open('yesterday', 'w+', encoding='utf-8') # ’w+‘ 写读,追加写 ,没什么用 file = open('yesterday', 'a+', encoding='utf-8') # 追加读 file = open('yesterday', 'rb') # 读取二进制文件 file = open('yesterday2', 'wb') #file.write('wI love you') # 会报错, 因为在python3中,任意字符串都是用Unicode编码的,即便在开头申明的编码集,必须是用 encode转化为二进制 file.write('wI love you'.encode()) # 得要编码成二进制
# 如果要对文件修改,建议把修改的内容写入新的文件 file = open('yesterday2', 'r', encoding='utf-8') file_new = open('yesterday2.bak', 'w', encoding='utf-8') for line in file: if '我飞快地奔走' in line: line = line.replace('我飞快地奔走', '纵容的享受') file_new.write(line) file.close() file_new.close()
2.8 with 语句
with open('yesterday', 'r') as f: print(f.read()) with open('yesterday', 'r') as f, \ open('yesterday2', 'r') as f2: pass
三 字符编码与转码
参考
http://www.cnblogs.com/yuanchenqi/articles/5956943.html
http://www.diveintopython3.net/strings.html
http://www.cnblogs.com/alex3714/articles/5717620.html