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}