集合(set)是一个无序的、元素不重复的序列,可以使用大括号 { } 或者 set() 函数创建集合,但是创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合的几种操作
1、集合的创建
>>> set1 = set([1,4,7,5,6,8]) # 用set函数创建一个集合 >>> set2 = {111, 222, 333, 444} # 用{}创建一个集合 >>> set4 = set() #创建一个空集合 >>> set1 {1, 4, 5, 6, 7, 8} >>> set2 {444, 333, 222, 111}
>>> set4
set()
2、添加元素
格式:s.add(x)
将元素x加到集合s中,下面使用set方法进行集合元素的添加
>>> set1 {1, 4, 5, 6, 7, 8, 9999} >>> set1.add(999) >>> set1 {1, 4, 5, 6, 7, 8, 999, 9999}
>>> set4.add('baidu')
>>> set4
{'baidu'}
>>>
还有一种update方法也可以进行集合元素的添加,参数可以是列表,元组,字典等
格式:s.update( x )
>>> set1 {1, 4, 5, 6, 7, 8, 999, 9999} >>> set1.update(['1','2']) >>> set1 {1, 4, 5, 6, 7, 8, 999, 9999, '2', '1'}
>>> set1.update({128})
>>> set1
{128, 1, 4, 5, 6, 7, 8, 999, 9999, '2', '1'}
>>>
可以看到update方法可以同时添加多个元素
3、删除元素
格式:s.remove( x ),当集合中不存在要删除的元素时,会出错
>>> set2
{444, 333, 222, 111}>>> set2.remove(111)
>>> set2
{444, 333, 222}
>>> set4
{'baidu'}
>>> set4.remove('baidu')
>>> set4
set()
>>> set4.remove(5)
Traceback (most recent call last):
File "<pyshell#92>", line 1, in <module>
set4.remove(5)
KeyError: 5
>>>
此外还有一个方法也是移除集合中的元素,如果要删除的元素不存在,不会发生错误。
格式:s.discard( x )
>>> set1
{128, 1, 4, 5, 6, 7, 8, 999, 9999, '2', '1'}
>>> set1.discard('2')
>>> set1
{128, 1, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>> set1.discard(8888)
>>> set1
{128, 1, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>>
也可以随机地删除并返回一个集合元素
格式:s.pop()
>>> set1
{128, 1, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>> set1.pop()
128
>>>
>>> set1
{1, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>> set1.update({128})
>>> set1
{128, 1, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>> set1.pop()
1
>>> set1
{128, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>>
4、统计元素个数
格式:len(s) 计算集合 s 元素个数
>>> set1
{128, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>> len(set1)
9
>>> set2
{444, 333, 222}
>>> len(set2)
3
>>> set4
set()
>>> len(set4)
0
>>>
5、清空集合
>>> set2
{444, 333, 222}
>>> set2.clear()
>>> set2
set()
>>>
6、判断元素是否在集合中存在
格式: x in s 判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False
- >>> set1
- {128, 4, 5, 6, 7, 8, 999, 9999, '1'}
- >>> 128 in set1
- True
- >>> '2' in set1
- False
- >>>
7、集合之间的运算
(1) 集合的交集
>>> set2 =set([2,4,6,8,1,10])
>>> set2
{1, 2, 4, 6, 8, 10}
>>> set1
{128, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>> set1.intersection(set2)
{8, 4, 6}
>>> set1 & set2
{8, 4, 6}
>>>
(2) 集合的并集
>>> set1
{128, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>> set2
{1, 2, 4, 6, 8, 10}
>>> set1.union(set2)
{128, 1, 2, 4, 5, 6, 7, 8, 999, 10, 9999, '1'}
>>> set1 | set2
{128, 1, 2, 4, 5, 6, 7, 8, 999, 10, 9999, '1'}
>>>
(3)集合的差集
>>> set1
{128, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>> set2
{1, 2, 4, 6, 8, 10}
>>> set1-set2
{128, 5, 999, 7, 9999, '1'}
>>> set1.difference(set2)
{128, 5, 999, 7, 9999, '1'}
>>> set2-set1
{1, 2, 10}
>>> set2.difference(set1)
{1, 2, 10}
>>>
(4)判断是否是父集和子集的关系
>>> set1
{128, 4, 5, 6, 7, 8, 999, 9999, '1'}
>>> set2
{1, 2, 4, 6, 8, 10}
>>> set3=set([1,2,4])
>>> set3
{1, 2, 4}
>>> set1.issubset(set2) #判断集合set1是否是set2的子集
False
>>> set1.issubset(set3)
False
>>> set2.issubset(set1)
False
>>> set2.issubset(set3)
False
>>> set3.issubset(set1)
False
>>> set3.issubset(set2)
True
>>> set1.issuperset(set2) #判断集合set1是否是集合set2的父集
False
>>> set1.issuperset(set3)
False
>>> set2.issuperset(set1)
False
>>> set2.issuperset(set3)
True
>>> set3.issuperset(set1)
False
>>> set3.issuperset(set2)
False
>>>