Python 集合、编码转换
1. 集合操作
集合是一个无序的,不重复的数据组合, 他的主要作业如下。
1. 去重,把一个列表变成集合,就自动去重了
2. 关系测试,测试两组数据之前的交集、差集、并集等关系
1.1 创建集合
1 2 3 4 5 6 7 8 | s1 = { 1 , 4 , 5 , 7 , 3 , 6 , 7 , 9 } s2 = set ( 'abcd' ) s3 = set () print ( type (s1), type (s2), type (s3))<br><br>list_1 = [ 1 , 4 , 5 , 7 , 3 , 6 , 7 , 9 ] list_1 = set ([list_1]) list_2 = set ([ 2 , 6 , 0 , 66 , 22 , 8 , 4 ]) list_3 = set ([ 1 , 3 , 7 ]) list_4 = set ([ 5 , 6 , 8 ]) |
1.2 增加数据
集合有去重功能,当追击的数据是集合中存在的,则不进行任何操作
- add():
- update():追加的数据是序列
1 2 3 | #添加 list_3.add( 100 ) list_3.update([ 22 , 44 , 66 ]) |
1.3 删除数据
- remove():删除集合中的指定数据,如果数据不存在会报错
- discard():删除集合中的指定数据,如果数据不存在也不会报错
- pop():随机删除集合中的某个数据,并返回这个数据。
1 2 3 4 5 | list_4.remove( 5 ) # 删除5,没有会报错 list_3.discard( 1 ) # 删除1,没有不会报错 print (list_3,list_4) list_3.pop() #随机删 print (list_3) |
1.4 查找数据
- in:判断数据在集合序列
- not in:判断数据不在集合序列
list1 = {1,2,3,4} print(4 in list1) print(4 not in list1)
1.5 其他方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | list_1 = [ 1 , 4 , 5 , 7 , 3 , 6 , 7 , 9 ] list_1 = set (list_1) list_2 = set ([ 2 , 5 , 6 , 0 , 66 , 22 , 8 , 4 ]) list_3 = set ([ 1 , 3 , 7 ]) list_4 = set ([ 5 , 6 , 8 ]) #交集:把两个集合中相同的打印出来 print (list_1 & 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_2.difference(list_1)) #list_2打印第list_1没有的数据 #子集:list_1集合中包含list_3 print (list_3.issubset(list_1)) #父集:list_2集合中包含list_4 print (list_2.issuperset(list_4)) #对称差集:list_1 和 list_2 集合中有相同的数据都不打印 print (list_1 ^ list_2) #合并重复的不打印 print (list_1.symmetric_difference(list_2)) #判断是否是交集:判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False print (list_3.isdisjoint(list_1)) #集合长度 print ( len (list_3)) |
2. 字符编码与转换
- encode() 编码,把uft-8/gbk编写成unicode
- decode() 解码,把unicode解码成utf-8/gbk
python2:
1 2 3 4 5 6 7 8 9 10 11 | import sys print (sys.getdefaultencoding()) msg = "我爱北京天安门" msg_gb2312 = msg.decode( "utf-8" ).encode( "gb2312" ) gb2312_to_gbk = msg_gb2312.decode( "gbk" ).encode( "gbk" ) print (msg) print (msg_gb2312) print (gb2312_to_gbk) |
python3:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import sys print (sys.getdefaultencoding()) msg = "我爱北京天安门" #msg_gb2312 = msg.decode("utf-8").encode("gb2312") msg_gb2312 = msg.encode( "gb2312" ) #默认就是unicode,不用再decode,喜大普奔 gb2312_to_unicode = msg_gb2312.decode( "gb2312" ) gb2312_to_utf8 = msg_gb2312.decode( "gb2312" ).encode( "utf-8" ) print (msg) print (msg_gb2312) print (gb2312_to_unicode) print (gb2312_to_utf8) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步