集合的基本操作

集合(set)与数学中集合的概念一致,即包含0个或多个数据项的无序组合。集合中的元素不可重复元素类型只能是固定数据类型,如整数、浮点数、字符串、元组等,不能是列表、字典和集合等可变数据类型

tips:Python提供了一个内置函数hash()来计算对象的哈希值,凡是无法计算哈希值(调用内置函数hash()时抛出异常)的对象都不能作为集合的元素,,也不能作为字典对象的”键“。

点此了解Python hash() 函数

集合的创建

1、创建集合的方式很简单,只需将逗号分隔的不同元素使用大括号括起来即可

>>> b={1,5,2,8}	# 创建集合
>>> b
{8, 1, 2, 5}

注意:集合元素是无序的,集合的打印效果与定义顺序可以不一致,且由于集合元素独一无二,使用集合类型能够过滤掉重复元素。

2、也可以使用set()函数将列表、元组等其他类型的数据转换为集合,如果原来的数据中存在重复元素,则在转换为集合时会将其删除。

>>> x = set('runoob')	# 将字符串转换为集合
>>> x
{'b', 'o', 'u', 'n', 'r'}

添加与删除集合元素

与字典相似,Python也提供了多种方法和函数用于集合元素的添加和删除,如下所示:

操作函数或方法 描述
S.add(x) 如果数据项x不在集合S中,将x添加到S中
S.update(T) 合并集合T中的元素到当前集合S中,并自动去除重复元素
S.pop() 随机删除并返回集合中的一个元素,如果集合为空则抛出异常
S.remove() 如果x在集合S中,移除该元素;如果x不存在则抛出异常
S.discard(x) 如果x在集合S中,移除该元素;如果x不存在不报错
S.clear() 清空集合
>>> s={1,2,3}
>>> s.add(4)	# 添加元素
>>> s.update({4,5,6})	# 更新当前集合,自动忽略重复元素
>>> s
{1, 2, 3, 4, 5, 6}
>>> s.discard(5)	# 删除元素,不存在则忽略该操作
>>> s
{1, 2, 3, 4, 6}
>>> s.remove(5)	# 删除元素,不存在则抛出异常
KeyError: 5
>>> s.pop()	# 删除并返回一个元素
1

集合运算

内置函数len()、max()、min()、sorted()等也适用于集合,另外,Python集合还支持数学意义上的交集、并集、差集、补集等运算,具体操作如下所示:

操作符 描述
S&T 交集,返回一个新集合,包括同时在S和T中的元素
S|T 并集,返回一个新集合,包括集合S和T中的所有元素
S-T 差集,返回一个新集合,包括在集合S中但不在集合T中的元素
S^T 补集,返回一个新集合,包括集合S和T中的元素,但不包括同时在集合S和T中的元素
S<=T 如果S与T相同或是S是T的子集,返回True;否则返回False,可以用S<T判断S是否是T的真子集
S>=T 如果S与T相同或是S是T的超集,返回True;否则返回False,可以用S>T判断S是否是T的真超集
>>> a_set = {1,2,3,4,5}
>>> b_set = {1,2,6,7,8}
>>> a_set&b_set	# 交集
{1, 2}
>>> a_set|b_set	# 并集
{1, 2, 3, 4, 5, 6, 7, 8}
>>> a_set-b_set	# 差集
{3, 4, 5}
>>> a_set^b_set	# 补集
{3, 4, 5, 6, 7, 8}
>>> 
>>> x = {1,2,3}
>>> y = {2,3}
>>> z = {1,2,4}
>>> x >= y	# y是否为x的子集
True
>>> x <= z	# x是否为z的子集
False
posted @ 2021-10-17 15:50  Cara_Smith  阅读(608)  评论(0编辑  收藏  举报