Python中,集合(set)是一种无序、可变且不允许重复元素的数据类型。集合常用于去重、集合运算(如并集、交集、差集等)等场景。集合在Python中非常有用,尤其是需要进行大量集合运算(如去重、求交集等)时,使用集合可以提高代码的效率和简洁性。

1、集合(set)

集合是无序且无索引的集合。 在Python中,集合用大括号括起来。

例如:

创建集合:

# 使用花括号创建集合
my_set = {1, 2, 3, 4, 5}
print(my_set)  # 输出: {1, 2, 3, 4, 5}# 使用 set() 函数创建集合
my_set = set([1, 2, 3, 4, 5])
print(my_set)  # 输出: {1, 2, 3, 4, 5}# 创建空集合只能用 set() 函数
empty_set = set()
print(empty_set)  # 输出: set()

注意:集合是无序的,不能确定的元素将以什么顺序出现。

2、添加和删除元素

可以使用 add() 方法添加元素,使用 remove()discard() 方法删除元素。

# 添加元素
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)  # 输出: {1, 2, 3, 4}

# 删除元素
my_set.remove(3)
print(my_set)  # 输出: {1, 2, 4}

# 删除元素,如果元素不存在不会报错
my_set.discard(5)
print(my_set)  # 输出: {1, 2, 4}

使用update()方法将多个项目添加到集合中:

set1 = {"c", "java", "python"}
set1.update(["js", "cjavapy", "linux"]) print(set1)

注意:如果不存在要删除的项目,remove()将引发错误。

使用pop()方法删除最后一项:

set1 = {"c", "java", "python"}
x = set1.pop() print(x) print(set1)

注意:集合是无序的,因此,当使用pop()方法时,您将不知道要删除的项目。

例如:

clear()方法清空集合:

set1 = {"c", "java", "python"}
set1.clear() print(set1)

例如:

del关键字将完全删除该集合:

set1 = {"c", "java", "python"}
del set1
print(set1)

3、集合运算

1)并集

set1 = {1, 2, 3}
set2 = {3, 4, 5} # 使用 | 操作符 union_set = set1 | set2 print(union_set) # 输出: {1, 2, 3, 4, 5}# 使用 union() 方法 union_set = set1.union(set2) print(union_set) # 输出: {1, 2, 3, 4, 5}

2)交集

set1 = {1, 2, 3}
set2 = {3, 4, 5} # 使用 & 操作符 intersection_set = set1 & set2 print(intersection_set) # 输出: {3}# 使用 intersection() 方法 intersection_set = set1.intersection(set2) print(intersection_set) # 输出: {3}

3)差集

set1 = {1, 2, 3}
set2 = {3, 4, 5} # 使用 - 操作符 difference_set = set1 - set2 print(difference_set) # 输出: {1, 2}# 使用 difference() 方法 difference_set = set1.difference(set2) print(difference_set) # 输出: {1, 2}

4)对称差集

set1 = {1, 2, 3}
set2 = {3, 4, 5} # 使用 ^ 操作符 symmetric_difference_set = set1 ^ set2 print(symmetric_difference_set) # 输出: {1, 2, 4, 5}# 使用 symmetric_difference() 方法 symmetric_difference_set = set1.symmetric_difference(set2) print(symmetric_difference_set) # 输出: {1, 2, 4, 5}

4、集合的其他操作

1)检查元素是否在集合中

my_set = {1, 2, 3}
print(1in my_set) 
 # 输出: True
print(4in my_set)
 # 输出: False

2)集合长度

my_set = {1, 2, 3}
print(len(my_set)) # 输出: 3

3)清空集合

my_set = {1, 2, 3}
my_set.clear() print(my_set) # 输出: set()

4)迭代集合

my_set = {1, 2, 3}
for element in my_set: print(element)

5)冻结集合(frozenset)

冻结集合是不可变的集合,可以作为字典的键或存储在其他集合中。

my_frozenset = frozenset([1, 2, 3])
print(my_frozenset) # 输出: frozenset({1, 2, 3})
# 尝试修改冻结集合会引发错误# my_frozenset.add(4) 、
# AttributeError: 'frozenset' object has no attribute 'add'

5、set()集合构造函数 

也可以使用set()构造函数进行设置。

例如:

使用set()构造函数创建一个集合:

set1 = set(("c", "java", "python")) # 请注意双括号
print(set1)

6、set集合方法

Python有一组内置方法,可在集合上使用。

方法

描述

add()

将元素添加到集合中

clear()

从集合中删除所有元素

copy()

返回集合的副本

difference()

Returns a set containing the difference between two or more sets

difference_update()

删除此集合中还包含在另一个指定集合中的项目

discard()

删除指定的项目

intersection()

返回一个集合,即另外两个集合的交集

intersection_update()

删除此集合中其他指定集合中不存在的项目

isdisjoint()

返回两个集合是否相交

issubset()

返回另一个集合是否包含此集合

issuperset()

返回此集合是否包含另一个集合

pop()

从集合中删除一个元素

remove()

删除指定的元素

symmetric_difference()

返回具有两组对称差的一组

symmetric_difference_update()

插入此集合和另一个中的对称差

union()

返回一个包含集合并集的集合

update()

使用此集合和其他集合的并集更新集合

推荐文档