Python set集合的基本操作(附带实例)
Python 的集合(set)是一个无序且没有重复元素的序列,集合中的元素必须是可 Hash 对象。集合不记录元素位置和插入顺序,因此,也不支持索引、切片等其他序列类的操作。
Python 程序中,定义集合可以使用
例如:
使用操作符“<”执行子集操作,同样地,也可使用方法 issubset() 完成。
使用操作符“|”执行并集操作,同样地,也可使用方法 union() 完成。
Python 程序中可以用“&”操作符执行交集操作,同样地,也可使用方法 intersection() 完成。
Python 程序中可以使用操作符“-”执行差集操作,同样地,也可使用方法 difference() 完成。
Python 程序中可以使用“^”操作符执行对称差操作,同样地,也可使用方法 symmetric_difference() 完成。
例如:
还有一个方法也可以实现添加元素,且参数可以是列表、元组、字典等,其语法格式为:
例如:
例如:
此外还有一个方法也可以实现移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
我们也可以设置随机删除集合中的一个元素,语法格式如下:
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