python 集合的操作

在Python中集合set基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种。创建集合set集合set添加集合删除交集并集差集的操作都是非常实用的方法。

1,用集合可以轻易的获取交集,并集,差集,子集,对称差集(去除交集要素的差集)

 1 list_1=[1,2,3,4,5,6,7,9]#原始列表1
 2 list_2=[2,8,14,46,51,9]#原始列表2
 3 list_1_set=set(list_1)#原始列表1的集合
 4 list_2_set=set(list_2)#原始列表2的集合
 5 
 6 #交集
 7 print(list_1_set.intersection(list_2_set))#通过intersection方法获取交集
 8 print(list_1_set & list_2_set)#通过 & 方法获取交集
 9 输出:{9, 2}
10 
11 list_2=[2,8,14,46,51,9]#原始列表2
12 list_4=[99,88]
13 list_2_set=set(list_2)#原始列表2的集合
14 list_4_set=set(list_4)#原始列表3的集合
15 print(list_4_set.isdisjoint(list_2_set))#通过isdisjoint方法判断2者是否有交集,没有返回True
16 输出:True
17 
18 #并集
19 list_1=[1,2,3,4,5,6,7,9]#原始列表1
20 list_2=[2,8,14,46,51,9]#原始列表2
21 list_1_set=set(list_1)#原始列表1的集合
22 list_2_set=set(list_2)#原始列表2的集合
23 print(list_1_set.union(list_2_set))#通过union方法可以获取并集
24 print(list_1_set|list_2_set)#通过管道符方法可以获取并集
25 输出:{1, 2, 3, 4, 5, 6, 7, 8, 9, 46, 14, 51}
26 {1, 2, 3, 4, 5, 6, 7, 8, 9, 46, 14, 51}
27 
28 #差集
29 list_1=[1,2,3,4,5,6,7,9]#原始列表1
30 list_2=[2,8,14,46,51,9]#原始列表2
31 list_1_set=set(list_1)#原始列表1的集合
32 list_2_set=set(list_2)#原始列表2的集合
33 print(list_1_set.difference(list_2_set))#通过difference方法可以获取差集,1里有,2里没有的
34 print(list_1_set-list_2_set)#通过 - 方法实现差集
35 print(list_2_set.difference(list_1_set))#通过difference方法可以获取差集,2里有,1里面没有的
36 print(list_2_set-list_1_set)#通过 - 方法实现差集
37 输出:
38 {1, 3, 4, 5, 6, 7}
39 {1, 3, 4, 5, 6, 7}
40 {8, 51, 46, 14}
41 {8, 51, 46, 14}
42 
43 #对称差集
44 list_1=[1,2,3,4,5,6,7,9]#原始列表1
45 list_2=[2,8,14,46,51,9]#原始列表2
46 list_1_set=set(list_1)#原始列表1的集合
47 list_2_set=set(list_2)#原始列表2的集合
48 print(list_1_set.symmetric_difference(list_2_set))#并集去除交集的要素,通过symmetric_difference方法实现
49 print(list_1_set^list_2_set)#通过 ^ 符号实现对称差集
50 输出:{1, 3, 4, 5, 6, 7, 8, 14, 46, 51}
51 {1, 3, 4, 5, 6, 7, 8, 14, 46, 51}
52 
53 #子集
54 list_2=[2,8,14,46,51,9]#原始列表2
55 list_3=[2,8]
56 list_2_set=set(list_2)#原始列表2的集合
57 list_3_set=set(list_3)#原始列表3的集合
58 print(list_3_set.issubset(list_2_set))#通过issubset方法判断集合3是否是集合2的子集
59 print(list_3_set<=list_2_set)
60 
61 print(list_2_set.issuperset(list_3_set))#通过issuperset方法判断集合2是否是集合3的父集
62 print(list_2_set>=list_3_set)
63 输出:True
64 True
65 True
66 True

2,集合要素的增删

list_1=[1,2,3,4,5,6,7,9]
list_1_set=set(list_1)#创建一个集合


list_1_set.add(11) #添加单个要素
print (list_1_set)
输出:{1, 2, 3, 4, 5, 6, 7, 9, 11}

list_1_set.update([888,999,777])#添加多个要素
print (list_1_set)
输出:{1, 2, 3, 4, 5, 6, 7, 999, 9, 777, 888}

list_1_set.remove(1)#删除一个要素
print (list_1_set)
输出:{2, 3, 4, 5, 6, 7, 9}

list_1_set.remove(99)#remove删除一个要素,要素不存在则报错
输出:Traceback (most recent call last):
  File "文件绝对路径", 错误代码行, in <module>
    list_1_set.remove(99)#删除一个要素,要素不存在则报错
KeyError: 99

list_1_set.discard(2)#删除一个要素
print (list_1_set)
输出:{1, 3, 4, 5, 6, 7, 9}

list_1_set.discard(99)#删除一个要素,要素不存在则不报错
print (list_1_set)
输出:{1, 3, 4, 5, 6, 7, 9}

3,要素是否在集合中,x in 集合

1 list_1=[1,2,3,4,5,6,7,9]#原始列表1
2 list_1_set=set(list_1)#原始列表1的集合
3 print(2 in list_1_set)#用in方法检查2是否在集合中
4 print(99 not in list_1_set)#用in方法检查99是否在集合中
5 输出:True
6 True

 

posted on 2017-11-23 14:23  敏少爷  阅读(238)  评论(0编辑  收藏  举报

导航