集合(set)也是Python语言所提供的内置数据结构,集合与列表、字典一样都属于可变类型的序列,集合中的元素不能重复,并且没有固定的顺序。集合使用大括号 {} 来表示,但是集合没有键值对,只能存储元素。创建集合使用大括号 {},但创建空集合需要调用set()函数,不能直接使用空大括号“{}”来创建空集合。集合没有索引,不能通过索引或位置访问元素,只能遍历集合。
1、定义集合
动手练一练:
# 使用set()函数创建一个空集合,不能直接使用空大括号“{}”来创建空集合
a = set()
print("空集合", a) # 输出 空集合 set()
# 使用set()函数创建数字集合
b = set([1, 2, 3])
print("数字集合", b) # 输出 数字集合 {1, 2, 3}
# 使用大括号创建数字集合
c = {4, 5, 6}
print("数字集合", c) # 输出 数字集合 {4, 5, 6}
# 使用大括号创建混合数据集合
d = {"Python", 3, "集合", 1.5}
print("混合数据集合", d) # 输出 混合数据集合 {'集合', 1.5, 3, 'Python'}
执行以上代码,输出结果为:
空集合 set()
数字集合 {1, 2, 3}
数字集合 {4, 5, 6}
混合数据集合 {'集合', 1.5, 3, 'Python'}
上面的例子中,需要注意的是,集合是无序的,没有固定的顺序。因此,输出结果中集合元素的顺序可能与你创建或添加的顺序不同。如果集合包含元素,可以使用大括号{ }或者set()函数创建集合,注意:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典。
2、添加集合元素
创建完一个集合后,我们可以对其中的集合元素进行操作,不仅可以添加元素,还是可以删除其中的元素。为集合添加单个元素可以使用add()方法,例如:
a = {4, 5, 6}
print(a)
a.add(7)
print(a)
a.add(5) # 只能更新一个值,加的值不能重复
print(a)
执行以上代码,输出结果为:
{4, 5, 6}
{4, 5, 6, 7}
{4, 5, 6, 7}
上面的例子中,添加了重复的新元素“5”,结果新元素不会被添加到集合中,使用add()方法添加新元素时,如果新元素和原来的元素没有重复则可以添加成功,如果相同则不会添加,因为集合的元素是唯一的。add()方法一次只能更新一个值,如果一次想要更新多个值可以使用update()方法,例如:
a = {4, 5, 6}
print(a)
a.update({"苹果", "香蕉"}) # 添加的类型可以是集合
a.update(["Python", "Pyhint"]) # 添加的类型可以是列表
a.update((9, 10)) # 添加的类型可以是元组
print(a)
执行以上代码,输出结果为:
{4, 5, 6}
{4, 5, 6, '苹果', '香蕉', 'Python', 'Pyhint', 9, 10}
上面的例子中,集合的update()方法其实就是计算原集合与另一个集合的并集,并用计算得出的并集更新原集合,update可以视为向集合中增加元素的一种方法。update()一次可以合并多个集合,而且不同类型可以混用。
3、删除集合元素
remove()方法可以从集合中删除指定的元素,如果删除的元素不存在,则Python解释器会输出错误信息,例如:
a = {4, 5, 6, 7, 8, 9}
print(a)
a.remove(9)
print(a)
a.remove(8)
print(a)
执行以上代码,输出结果为:
{4, 5, 6, 7, 8, 9}
{4, 5, 6, 7, 8}
{4, 5, 6, 7}
4、交集、并集、差集
在两个集合的运算中,我们可以找出相同的元素,也可以找出不同的元素,又或是进行元素的整合,集合中的操作符和我们数学中集合的运算很像,如求交集、并集、差集等。
a = {4, 5, 6, 7, 8, 9}
b = {1, 3, 5, 7, 9}
print(a) # 输出 {4, 5, 6, 7, 8, 9}
print(b) # 输出 {1, 3, 5, 7, 9}
print("交集", a & b) # 输出 交集 {9, 5, 7}
print("并集", a | b) # 输出 并集 {1, 3, 4, 5, 6, 7, 8, 9}
print("差集", a - b) # 输出 差集 {8, 4, 6}
执行以上代码,输出结果为:
{4, 5, 6, 7, 8, 9}
{1, 3, 5, 7, 9}
交集 {9, 5, 7}
并集 {1, 3, 4, 5, 6, 7, 8, 9}
差集 {8, 4, 6}
上面的例子中,求集合的交集使用的符号是“&”,返回两个集合的共同元素的集合,即集合的交集。求集合的并集用的是符号“|”,返回的是两个集合所有的并去掉重复的元素的集合。差集使用的符号是减号“-”。