Python集合

集合(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
>>> 
posted @ 2019-08-17 22:56  蔡蔡的木棉花  阅读(161)  评论(0编辑  收藏  举报