Python 集合、编码转换

1. 集合操作

集合是一个无序的,不重复的数据组合, 他的主要作业如下。
  1. 去重,把一个列表变成集合,就自动去重了
  2. 关系测试,测试两组数据之前的交集、差集、并集等关系

1.1 创建集合

s1 = {1,4,5,7,3,6,7,9}
s2 = set('abcd')
s3 = set()
print(type(s1),type(s2),type(s3))

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():追加的数据是序列
#添加
list_3.add(100)
list_3.update([22,44,66])

1.3 删除数据

  • remove():删除集合中的指定数据,如果数据不存在会报错
  • discard():删除集合中的指定数据,如果数据不存在也不会报错
  • pop():随机删除集合中的某个数据,并返回这个数据。
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 其他方法

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:
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:
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)

  

 
 
posted @ 2016-08-07 11:07  Crazy丶迷恋  阅读(386)  评论(0编辑  收藏  举报