一、集合
set,集合,是唯一的、不可变的对象的一个无序集合。集合只能包含不可变的对象类型,因此,列表和字典不能嵌入集合;如果需要存储复合值,可以嵌入元组;如果需要嵌入集合本身,需要调用frozenset,由frozenset创建的集合不可变,且不可修改,但可以嵌套到其他集合中。
1、集合的基础知识(python2.7)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
|
1、定义空集合 In [2]: s1 = set ()
2、创建集合 In [3]: s2 = {11,22, 'dd' }
In [4]: print s2 set ([ 'dd' , 11, 22])
3、通过序列或其他可迭代的对象创建集合 In [5]: s3 = set ( 'abcde' )
In [6]: print s3 set ([ 'a' , 'c' , 'b' , 'e' , 'd' ])
In [9]: s4 = set ({ 'a' :1, 'b' : 'gg' })
In [10]: print s4 set ([ 'a' , 'b' ])
In [11]: s5 = set ([1,2, 'ace' , 'hj' ])
In [12]: print s5 set ([ 'hj' , 1, 2, 'ace' ])
4、通过序列或可迭代对象创建的集合可进行的数学操作 In [13]: 'a' in s3
Out[13]: True In [14]: s3 -s4 Out[14]: { 'c' , 'd' , 'e' }
In [15]: s3 | s4 Out[15]: { 'a' , 'b' , 'c' , 'd' , 'e' }
In [16]: s3 & s4 Out[16]: { 'a' , 'b' }
In [17]: s3 ^ s4 Out[17]: { 'c' , 'd' , 'e' }
In [18]: s3 > s4 Out[18]: True In [19]: s3 < s4 Out[19]: False |
2、集合的方法
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
1、添加元素:集合中无则添加,有则不进行操作 In [21]: s3.add( 'new' )
In [22]: print s3 set ([ 'a' , 'c' , 'b' , 'e' , 'd' , 'new' ])
2、清除集合中所有元素 In [24]: s2 Out[24]: {11, 22, 'dd' }
In [25]: s2. clear ()
In [26]: s2 Out[26]: set ()
3、浅拷贝 In [28]: s3 Out[28]: { 'a' , 'b' , 'c' , 'd' , 'e' , 'new' }
In [29]: s5 = s3.copy() In [30]: s5 Out[30]: { 'a' , 'b' , 'c' , 'd' , 'e' , 'new' }
4、两个集合的差集; In [31]: s3 Out[31]: { 'a' , 'b' , 'c' , 'd' , 'e' , 'new' }
In [32]: s4 Out[32]: { 'a' , 'b' }
s3中存在而s4中不存在,差集 In [33]: s3.difference(s4) Out[33]: { 'c' , 'd' , 'e' , 'new' }
s3中不存在的和s4中不存在的都取出,对称差集 In [34]: s3.symmetric_difference(s4) Out[34]: { 'c' , 'd' , 'e' , 'new' }
先比较差集,之后将比较的结果重新赋值给s3 In [35]: s3.difference_update(s4) In [36]: s3 Out[36]: { 'c' , 'd' , 'e' , 'new' }
先比较对称差集,之后将比较的结果重新复制给s3 In [42]: s3.symmetric_difference_update(s4) In [43]: s3 Out[43]: { 'c' , 'd' , 'e' , 'new' }
5、移除指定元素,不存在不报错 In [43]: s3 Out[43]: { 'c' , 'd' , 'e' , 'new' }
In [44]: s3.discard( 'new' )
In [45]: s3 Out[45]: { 'c' , 'd' , 'e' }
In [46]: s3.discard(111) 6、移除指定元素,不存在会报错 In [47]: s3.remove(111) --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-47-179a5da03057> in <module>()
----> 1 s3.remove(111) KeyError: 111 7、随机移除集合中元素,集合为空时会报错 In [48]: s3 Out[48]: { 'c' , 'd' , 'e' }
In [49]: s3.pop() Out[49]: 'c'
In [50]: s3 Out[50]: { 'd' , 'e' }
8、两个集合取交集 In [57]: s4 Out[57]: { 'a' , 'b' }
In [58]: s3 Out[58]: { 'a' , 'c' , 'd' , 'e' }
In [59]: s3.intersection(s4) Out[59]: { 'a' }
将取出的交集重新赋值给s3 In [60]: s3.intersection_update(s4) In [61]: s3 Out[61]: { 'a' }
9、判断两个集合有无交集 In [65]: s3.isdisjoint(s4) Out[65]: False 10、并集 In [67]: s3.union(s4) Out[67]: { 'a' , 'b' , 'c' , 'd' , 'e' }
11、将可迭代的对象加入集合 列表 In [68]: l1 = [1,2,3,4] In [69]: s3.update(l1) In [70]: s3 Out[70]: {1, 2, 3, 4, 'a' , 'b' , 'c' , 'd' , 'e' }
字符串 In [71]: s3.update( 'jonny' )
In [72]: s3 Out[72]: {1, 2, 3, 4, 'a' , 'b' , 'c' , 'd' , 'e' , 'j' , 'n' , 'o' , 'y' }
元组 In [74]: s3.update(t1) In [75]: s3 Out[75]: {1, 2, 3, 4, 12, 13, 14, 'a' , 'b' , 'c' , 'd' , 'e' , 'j' , 'n' , 'o' , 'y' }
|
3、集合解析(python3.x新特性)
1
2
|
>>> {i ** 2 for i in [1,2,3,4]}
{16, 1, 4, 9} |
本文转自 元婴期 51CTO博客,原文链接:http://blog.51cto.com/jiayimeng/1898941