首页 > 编程笔记 > Python笔记 阅读:7

Python set集合的基本操作(附带实例)

Python 的集合(set)是一个无序且没有重复元素的序列,集合中的元素必须是可 Hash 对象。集合不记录元素位置和插入顺序,因此,也不支持索引、切片等其他序列类的操作。

Python 程序中,定义集合可以使用 { } 或者 set(),但定义空集合不能使用 { },因为 { } 是创建空字典的方法,定义空集合可以使用 set()。

例如:
>>>  s={1,2,4,5}
>>>  print(type(s))
<class'set'>
>>>  s1={}
>>>  print(type(s1))                     ##空字典定义
<class'dict'>
>>>  s1=set([])
>>>  print(type(s1))                     ###空集合定义
<class'set'>

Python set集合运算

集合之间也可进行数学集合运算(例如并集、交集等),可用相应的操作符或方法来实现。

1) 子集

子集,为某个集合中一部分的集合,故亦称部分集合。

使用操作符“<”执行子集操作,同样地,也可使用方法 issubset() 完成。
>>>  A=set('abcd')
>>>  B=set('cdef')
>>>  C=set("ab")
>>>  C<A                              #C是A的子集
True
>>>  C<A
True
>>>  C.issubset(A)
True

2) 并集

一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。

使用操作符“|”执行并集操作,同样地,也可使用方法 union() 完成。
>>>  A=set('abcd')
>>>  B=set('cdef')
>>>  A|B
{'f','e','a','d','c','b'}
>>>  A.intersection(B)
{'c','d'}

3) 交集

两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。

Python 程序中可以用“&”操作符执行交集操作,同样地,也可使用方法 intersection() 完成。
>>>  A=set('abcd')
>>>  B=set('cdef')
>>>  A&B
{'c','d'}
>>>  A.intersection(B)
{'c','d'}

4) 差集

A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合。

Python 程序中可以使用操作符“-”执行差集操作,同样地,也可使用方法 difference() 完成。
>>>  A=set('abcd')
>>>  B=set('cdef')
>>>  A-B
{'a','b'}
>>>  A.difference(B)
{'a','b'}
>>>  {'b','a'}
{'a','b'}

5) 对称差

两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。

Python 程序中可以使用“^”操作符执行对称差操作,同样地,也可使用方法 symmetric_difference() 完成。
>>>  A=set('abcd')
>>>  B=set('cdef')
>>>  A^B
{'f','e','a','b'}
>>>  A.symmetric_difference(B)
{'f','e','a','b'}

Python set集合的方法

在 Python 中,相关的集合方法也提供相应的函数来实现,下面对各种方法进行介绍。

1) 添加元素

在 Python 中,提供了 add() 方法向集合内增加元素,如果添加的元素已经存在,则不执行任何操作。

例如:
thisset=set(("Google","Runoob","Taobao"))
thisset.add("Facebook")
print(thisset)
{'Google','Facebook','Taobao','Runoob'}

还有一个方法也可以实现添加元素,且参数可以是列表、元组、字典等,其语法格式为:
s.update(x)
x 可以有多个,用逗号分开。

例如:
>>>  thisset=set(("Google","Runoob","Taobao"))
>>>  thisset.update({1,3})
>>>  print(thisset)
{'Google',1,3,'Runoob','Taobao'}
>>>  thisset.update([1,4],[5,6])
>>>  print(thisset)
{'Google',1,3,4,5,6,'Runoob','Taobao'}

2) 移除元素

在 Python 中,提供了 remove() 方法实现集合移除元素。语法格式为:
s.remove(x)
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。

例如:
>>>  s={1,2,3,4,5,6}
>>>  s.remove(3)
>>>  s
{1,2,4,5,6}
>>>  s.remove(8) %不存在会发生错误
Tr aceback(mostrecent call last):
  Fi l e"<stdin>",line 1,in<module>
KeyError:8

此外还有一个方法也可以实现移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
s.discard(x)
例如:
>>>  s={1,2,3,4,5,6}
>>>  s.discard(7)                     #不存在不会发生错误
>>>  s
{1,2,3,4,5,6}

我们也可以设置随机删除集合中的一个元素,语法格式如下:
s.pop()
例如:
>>>  fruits={"apple","banana","cherry"}
>>>  x=fruits.pop()
>>>  print(x)
cherry

相关文章