集合(Set)是 Python 中的一种基本数据结构,它是由不重复元素组成的无序集合。集合对象支持多种数学运算,如并集、交集、差集和对称差等。
集合的特点包括:
使用大括号 {}
或者 set()
函数可以创建一个集合。例如:
要定义一个空集合,可以使用 set()
方法,如下所示:
empty_set = set()
使用大括号 {}
可以定义一个非空集合。如下所示:
non_empty_set = {1, 2, 3, 4, 5}
集合的特性之一是其元素的唯一性。在集合中,不允许存在重复的元素,每个元素都是唯一的。这意味着无论你添加多少次相同的元素,集合中都只会保留一个副本。
# 创建一个包含重复元素的列表
my_list = [1, 2, 3, 4, 5, 1, 2, 3]
# 使用 set() 方法将列表转换为集合
my_set = set(my_list)
# 打印集合
print("集合:", my_set)
除了元素的唯一性之外,集合的另一个重要特性是元素的无序存储。这意味着集合中的元素没有特定的顺序,它们不像列表或元组那样按照索引有序存储。
无序存储的特性使得集合更适合用于快速检查成员资格和去除重复元素,但不适合需要按照索引顺序访问元素的情况。
# 创建一个包含多个元素的集合
my_set = {3, 1, 4, 1, 5, 9, 2, 6, 5}
# 打印集合
print("集合:", my_set)
向集合中添加元素。
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 输出: {1, 2, 3, 4}
从集合中移除指定元素。如果元素不存在,会引发 KeyError 错误。
my_set.remove(3)
print(my_set) # 输出: {1, 2, 4}
从集合中移除指定元素。如果元素不存在,不会引发错误。
my_set.discard(5)
print(my_set) # 输出: {1, 2, 4}
随机删除并返回集合中的一个元素。如果集合为空,会引发 KeyError 错误。
popped_element = my_set.pop()
print(popped_element) # 输出: 1
清空集合中的所有元素。
my_set.clear()
print(my_set) # 输出: set()
将其他集合或可迭代对象中的元素添加到集合中。
my_set.update([5, 6, 7])
print(my_set) # 输出: {5, 6, 7}
返回集合的一个浅拷贝(副本)。
new_set = my_set.copy()
print(new_set) # 输出: {5, 6, 7}
这些是一些常用的集合基础方法,使用它们有效地操作集合中的元素。
Python
中的 set
类提供了集合操作相关的内置方法,集合中还提供了部分操作符号与之对应,下面按照类中方法定义的顺序演示。
集合内置函数与集合操作符对于关系可参照下表:
方法 | 符号 | 说明 |
---|---|---|
difference | - | 计算差集 |
intersection | & | 计算交集 |
issubset | < | 子集判断 |
symmetric_difference | ^ | 计算对称差集 |
union | | | 计算并集 |
返回一个新集合,包含当前集合中有但其他集合中没有的元素。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
result = set1.difference(set2)
print(result) # 输出: {1, 2}
返回一个新集合,包含同时在两个集合中的元素。
result = set1.intersection(set2)
print(result) # 输出: {3, 4}
判断当前集合是否为另一个集合的子集。
subset = {1, 2}
print(subset.issubset(set1)) # 输出: True
返回一个新集合,包含所有只在一个集合中出现的元素。
result = set1.symmetric_difference(set2)
print(result) # 输出: {1, 2, 5, 6}
返回一个新集合,包含两个集合中的所有元素。
result = set1.union(set2)
print(result) # 输出: {1, 2, 3, 4, 5, 6}
lst = [1, 2, 3, 4, 1, 2, 5]
unique_set = set(lst)
print(unique_set) # 输出: {1, 2, 3, 4, 5}
s = {1, 2, 3, 4, 5}
print(3 in s) # 输出: True
print(6 not in s) # 输出: True
s1 = {1, 2, 3}
s2 = {3, 4, 5}
print(s1.union(s2)) # 输出: {1, 2, 3, 4, 5}
print(s1.intersection(s2)) # 输出: {3}
data = {1, 2, 3, 4, 5}
marked = {2, 3}
filtered_data = data - marked
print(filtered_data) # 输出: {1, 4, 5}
data = {1, 2, 3, 4, 5}
print(3 in data) # 输出: True
ip_addresses = {'192.168.1.1', '192.168.1.2', '192.168.1.3'}
trusted_ips = {'192.168.1.1', '192.168.1.2'}
unauthorized_ips = ip_addresses - trusted_ips
print(unauthorized_ips) # 输出: {'192.168.1.3'}
db_results = {'user1', 'user2', 'user3', 'user4', 'user5'}
admins = {'user1', 'user2'}
regular_users = db_results - admins
print(regular_users) # 输出: {'user3', 'user4', 'user5'}
这些示例展示了集合在不同情境下的应用,利用集合的特性和方法,可以更加方便地处理数据,提高代码的效率。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。