Python组合数据类型----5.5 集 合

51 阅读3分钟

Python的集合本身是可变类型,但集合中的元素必须是不可变类型的。与列表和元组相比,集合的特点是元素无序且必须唯一。

下面分别介绍创建集合和集合的常见操作:

1、创建集合

集合的表现形式为一组包含在大括号 “{}” 中、由英文逗号 “,” 分隔的元素。使用 “{}” 可以直接创建集合,示例代码如下:

s1 = {1}                      # 创建包含一个元素的集合
s2 = {1, 'b', (2, 5)}         # 创建包含多个元素的集合

使用内置函数 set () 也可以创建集合,如果该函数的参数列表为空,则创建的是一个空集合,示例代码如下:

s = set()

需要注意的是,使用 {} 不能创建空集合,空集合只能利用 set () 函数创建。

若使用 set () 函数创建非空集合,需为该函数传入一个可迭代对象,示例代码如下:


s1 = set([1, 2, 3])        # 根据列表创建集合
s2 = set((2, 3, 4))        # 根据元组创建集合
s3 = set('python')         # 根据字符串创建集合
s4 = set(range(5))         # 根据range()函数返回的结果创建集合

2、集合的常见操作

集合是可变的,集合中的元素可以动态增加或删除。Python提供了一些内置方法来操作集合,操作集合的常见方法如所示:

方法功能说明
add(x)向集合中添加元素x,x已存在时不做处理
remove(x)删除集合中的元素 x,若 x 不存在则抛出 KeyError 异常
discard(x)删除集合中的元素 x,若 x 不存在不做处理
pop()随机返回集合中的一个元素,同时将该元素从集合中删除。若集合为空,抛出 KeyError 异常
clear()清空集合
copy()复制集合,返回值为集合
isdisjoint(T)判断当前集合和集合 T 是否包含相同的元素,如果不包含则返回 True,否则返回 False

使用表中的方法操作本节创建的集合,示例代码如下:

s1.add('s')                # 向集合s1中添加元素s
print(s1)
s2.remove(3)               # 删除集合s2中的元素3
print(s2)
s3.discard('p')            # 删除集合s3中的元素p
print(s3)
data = s4.pop()            # 随机返回集合s4中的一个元素
print(data)
s3.clear()                 # 清空集合s3
print(s3)
s5 = s2.copy()             # 复制集合s2并赋给s5
print(s5)
result = s4.isdisjoint(s2) # 判断集合s4和s2是否有相同的元素
print(result)

运行代码,结果如下所示:

{1, 2, 3, 's'}
{2, 4}
{'h', 'y', 't', 'n', 'o'}
0
set()
{2, 4}
False
3、集合推导式

集合推导式与列表推导式的格式相似,区别在于集合推导式外侧为大括号 “{}”,其语法格式如下所示:

{表达式 for 临时变量 in 目标对象 if 判断条件}

以上语法格式中遍历的目标对象可以是集合或其他可迭代对象。通过集合推导式在列表ls的基础上生成只包含值为偶数的元素的新集合,示例代码如下:

ls = [1, 2, 3, 4, 5, 6, 7, 8] 
s = {data for data in ls if data%2==0} 
print(s)

运行代码,结果如下所示:

{8, 2, 4, 6}