python基础第三课

时间:2021-11-13 20:13:09

一  集合

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在同级目录,内容为

python基础第三课python基础第三课
越女采莲秋水畔,窄袖轻罗,暗露双金钏。照影摘花花似面,芳心只共丝争乱。

鸡尺溪头风浪晚,雾重烟轻,不见来时伴。隐隐歌声归棹远,离愁引着江南岸。”

一阵轻柔婉转的歌声,飘在烟水蒙蒙的湖面上。歌声发自一艘小船之中,船里五个少女和歌嘻笑,
荡舟采莲。她们唱的曲子是北宋大词人欧阳修所作的“蝶恋花”词,写的正是越女莲的情景,虽只寥六十字,
但季节、时辰、所在、景物以及越女的容貌、衣着、首饰、心情,无一不描绘得历历如见,下半阕更是写景中有叙事,
叙事中挟抒情,自近而远,余意不尽。欧阳修在江南为官日久,吴山越水,柔情密意,尽皆融入长短句中。
宋人不论达官贵人,或是里巷小民,无不以唱词为乐,是以柳永新词一出,有井水处皆歌,而江南春岸折柳,
秋湖采莲,随伴的往往便是欧词。

时当南宋理宗年间,地处嘉兴南湖。节近中秋,荷叶渐残,莲肉饱实。这一阵歌声传入湖边一个道姑耳中。
她在一排柳树下悄立已久,晚风拂动她杏黄色道袍的下摆,拂动她颈中所插拂尘的万缕柔丝,心头思潮起伏,
当真亦是“芳心只共丝争乱”。只听得歌声渐渐远去,唱的是欧阳修另一首“蝶恋花”词,一阵风吹来,
隐隐送来两句:“风月无暗换,旧游如梦空肠断……”歌声甫歇,便是一阵格格娇笑。
View Code

 

2.1  基本操作

 

 data = open("yesterday", encoding="utf-8").read()
print(type(data)) # <class 'str'>
print(data)

 

 

 

结果:打印全部内容

python基础第三课python基础第三课
越女采莲秋水畔,窄袖轻罗,暗露双金钏。照影摘花花似面,芳心只共丝争乱。

鸡尺溪头风浪晚,雾重烟轻,不见来时伴。隐隐歌声归棹远,离愁引着江南岸。”

一阵轻柔婉转的歌声,飘在烟水蒙蒙的湖面上。歌声发自一艘小船之中,船里五个少女和歌嘻笑,
荡舟采莲。她们唱的曲子是北宋大词人欧阳修所作的“蝶恋花”词,写的正是越女莲的情景,虽只寥六十字,
但季节、时辰、所在、景物以及越女的容貌、衣着、首饰、心情,无一不描绘得历历如见,下半阕更是写景中有叙事,
叙事中挟抒情,自近而远,余意不尽。欧阳修在江南为官日久,吴山越水,柔情密意,尽皆融入长短句中。
宋人不论达官贵人,或是里巷小民,无不以唱词为乐,是以柳永新词一出,有井水处皆歌,而江南春岸折柳,
秋湖采莲,随伴的往往便是欧词。

时当南宋理宗年间,地处嘉兴南湖。节近中秋,荷叶渐残,莲肉饱实。这一阵歌声传入湖边一个道姑耳中。
她在一排柳树下悄立已久,晚风拂动她杏黄色道袍的下摆,拂动她颈中所插拂尘的万缕柔丝,心头思潮起伏,
当真亦是“芳心只共丝争乱”。只听得歌声渐渐远去,唱的是欧阳修另一首“蝶恋花”词,一阵风吹来,
隐隐送来两句:“风月无暗换,旧游如梦空肠断……”歌声甫歇,便是一阵格格娇笑。
View Code

 

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