Python 学习日记第三篇 -- 集合

一、集合

   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 in [1,2,3,4]}
{16, 1, 4, 9}

本文转自 元婴期 51CTO博客,原文链接:http://blog.51cto.com/jiayimeng/1898941



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值