一、集和
集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
1.创建集合
>>> s = set([3,5,9,10]) #创建一个数值集合
>>> t = set("Hello") #创建一个唯一字符的集合
>>> s {9, 10, 3, 5} >>> t {'e', 'H', 'l', 'o'} #集和自动去重
>>> type(s),type(t) (<class 'set'>, <class 'set'>) #集和类型
>>> len(s) #集和长度
4
>>> s==t False >>> s1=s >>> s1 {9, 10, 3, 5} >>> s1==s True
2.访问集和
由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。
>>> t {'e', 'H', 'l', 'o'} >>> "e" in t True >>> "a" in t False >>> "a " not in t True >>> for i in t: print(i) e H l o
3.更新集和
可使用以下内建方法来更新:
s.add() s.update() s.remove()
注意只有可变集合(set创建的集和,frozense创建的集和是不可变集和)才能更新:
>>> s {9, 10, 3, 5} >>> t {'e', 'H', 'l', 'o'} >>> s.add(1) #添加一个元素
>>> s {9, 10, 3, 5, 1} >>> s.update([0,2,4]) #添加多个元素
>>> s {0, 1, 2, 3, 4, 5, 9, 10} >>> t.add('python') >>> t {'e', 'H', 'l', 'python', 'o'} >>> t.update('python') #添加一个字符会拆成多个
>>> t {'e', 'y', 'n', 'h', 't', 'p', 'o', 'python', 'H', 'l'} >>> t.remove('python') #删除一个元素
>>> t {'e', 'y', 'n', 'h', 't', 'p', 'o', 'H', 'l'}
4.集和关系操作
x in s 测试 x 是否是 s 的成员 x not in s 测试 x 是否不是 s 的成员 s.issubset(t) s <= t 测试是否 s 中的每一个元素都在 t 中 s.issuperset(t) s >= t 测试是否 t 中的每一个元素都在 s 中 s.union(t) s | t # t 和 s的并集
返回一个新的 set 包含 s 和 t 中的每一个元素 s.intersection(t) s & t # t 和 s的交集
返回一个新的 set 包含 s 和 t 中的公共元素 s.difference(t) s - t # 求差集(项在s中,但不在t中)
返回一个新的 set 包含 s 中有但是 t 中没有的元素 s.symmetric_difference(t) s ^ t # 对称差集(项在t或s中,但不会同时出现在二者中)
返回一个新的 set 包含 s 和 t 中不重复的元素 s.copy() 返回 set “s”的一个浅复制
del:删除集和本身,如“del t”
>>> s and t #取t
{'e', 'y', 'n', 'h', 't', 'p', 'o', 'H', 'l'} >>> s or t #取s
{0, 1, 2, 3, 4, 5, 6, 9, 10} >>> type(s) <class 'set'>
>>> list(s) #转化为列表模式
[0, 1, 2, 3, 4, 5, 6, 9, 10] >>> str(s) #转化为字符串模式
'{0, 1, 2, 3, 4, 5, 6, 9, 10}'
>>> type(str(s)) <class 'str'>
>>> tuple(s) #转化为元组
(0, 1, 2, 3, 4, 5, 6, 9, 10)
二、文件操作
打开文件的模式:
- r, 只读模式【默认】
- w,只写模式【不可读;不存在则创建;存在则删除内容;】
- a, 追加模式【不可读;不存在则创建;存在则只追加内容;】
"+" 同时读写某个文件:
- r+,可读写文件。【可读;可追加】
- w+,写读
- a+,追加读
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
1 我越无所适从 2 越会事与愿违 3 在交错的时空 4 灵魂加速下坠 5 Here we are, here we are, here we are
默认操作文件
1.read()、readline()、readlines()的区别
f=open("haproxy.txt",encoding="utf-8") #默认读取模式
print(f) #不加参数,直接打印
''' <_io.TextIOWrapper name='haproxy.txt' mode='r' encoding='utf-8'> '''
print(f.read()) #read参数,读取文件所有内容
''' 我越无所适从 越会事与愿违 在交错的时空 灵魂加速下坠 Here we are, here we are, here we are '''
print(f.readline()) #readline,只读取文章中的一行内容
'''我越无所适从'''
print(f.readlines()) #readlines,把文章内容以换行符分割,并生成list格式,数据量大的话不建议使用 #['我越无所适从\n', '越会事与愿违\n', '在交错的时空\n', '灵魂加速下坠\n', 'Here we are, here we are, here we are\n']
f.close() #关闭文件
f= open("har.txt",encoding="utf-8") for index,line in enumerate(f.readlines()): #先把文件内容以行为分割生成列表,数据量大不能用
if index == 3: print("-----我是分割线-------") continue
print(line.strip()) count = 0 for line |