Python 集合使用入门

365 阅读5分钟

在 Python 编程的广阔世界中,提供了丰富多样的内置数据结构,用于方便高效的组织和存储数据。其中,集合就是 Python 中必不可少的几种常见数据结构之一。Python 中的集合是一个不包含重复元素的无序容器,支持并集、交集、差集、对称差分等集合运算。

跟着教程,让我们开始踏上揭开集合神秘面纱的旅程吧!

集合是什么?

想象一下,你正在举办一场聚会,聚会的朋友来自不同的背景,每个人都有自己独特的身份。现在,把这个聚会想象成一个集合,每个个体都是独一无二的,就像 Python 中集合的元素一样。

就像参加聚会的客人没有两个是相同的一样,集合中的元素也没有两个是相同的。这种元素独一无二的特点正是集合的核心所在。

创建集合

在 Python 中,你可以使用大括号{}set()构造函数创建一个集合。创建集合时需要指定你想包含的初始元素:

# 使用大括号创建集合
guest_set1 = {"Alice", "Bob", "Charlie", "David", "Eve"}

# 使用 set() 构造函数创建集合
guest_set2 = set(["David", "Eve", "Frank", "Grace", "Helen"])

基本操作

将元素添加到集合中

向集合中添加元素的行为就像邀请新客人参加聚会一样。你可以使用add()方法添加新元素:

# 使用 add() 方法添加元素
guest_set1.add("Frank")

print(guest_set1)  # 输出:{'Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank'}

示例中,使用add()方法将 "Frank" 这个名字添加到集合guest_set1,代表一位名叫 Frank 的新客人来到了你的聚会。

从集合中删除元素

同样,从集合中删除元素就像有客人离开聚会一样。为此,你可以使用remove()discard()方法:

# 使用 remove() 方法删除元素
guest_set1.remove("Charlie")

print(guest_set1)  # 输出:{'Alice', 'Bob', 'David', 'Eve', 'Frank'}

# 使用 discard() 方法删除元素
guest_set1.discard("Bob")

print(guest_set1)  # 输出:{'Alice', 'David', 'Eve', 'Frank'}

在第一个示例中,使用remove()方法从集合guest_set1中删除了 "Charlie" 这个名字,代表名为 Charlie 的客人离开了聚会。

在第二个示例中,使用dispand()方法从集合guest_set1中删除了 "Bob" 这个名字,代表另一个名为 Bob 的客人也离开了聚会。

获取集合的长度

就像你可以统计参加聚会的客人人数一样,你也可以使用len()函数统计集合的长度:

# 使用 len() 函数获取集合的长度
print(len(guest_set1))  # 输出:4

示例中,使用len()函数返回集合guest_set1中元素的个数,表示参加聚会的客人人数。

集合操作

并集

union() 方法,用于合并两个集合中的所有元素,并返回一个新的集合,这个新集合中包含了两个原始集合中的所有不重复元素:

# 使用 union() 方法进行集合并集
all_guests = guest_set1.union(guest_set2)

print(all_guests)  # 输出:{'Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace', 'Helen'}

示例中,使用union() 方法会将 guest_set1guest_set2 合并成一个名为 all_guests 的新集合,代表两个不同聚会客人的合并名单,并且没有任何重复名字。

交集

intersection() 方法,用于获取两个集合共有的元素,即它们的交集。这个方法返回一个新集合,包含了所有集合共有的元素:

# 使用 intersection() 方法进行集合交集
common_guests = guest_set1.intersection(guest_set2)

print(common_guests)  # 输出:{'David', 'Eve'}

示例中,intersection()方法会寻找guest_set1guest_set2中共同的元素,并将其存储到新集合common_guests中。

差集

difference() 方法,用于获取两个集合之间的差异,即从一个集合中移除所有与另一个集合共有的元素,返回一个新集合,这个新集合包含了所有在第一个集合中但不在第二个集合中的元素:

# 使用 difference() 方法计算集合之间的差异
unique_to_guest_set1 = guest_set1.difference(guest_set2)

print(unique_to_guest_set1)  # 输出:{'Alice', 'Frank'}

示例中,difference()方法会查找guest_set1中存在但guest_set2中不存在的元素,并将其存储在新集合unique_too_guest_set1中。

对称差分

symmetric_difference() 方法,用于获取两个集合之间的对称差集,即所有不属于两个集合交集的元素:

# 使用 symmetric_difference() 方法计算集合之间的对称差异
exclusive_guests = guest_set1.symmetric_difference(guest_set2)

print(exclusive_guests)  # 输出:{'Bob', 'Charlie', 'Grace', 'Alice', 'Frank', 'Helen'}

示例中,symmetric_difference()方法会查找只存在于guest_set1guest_set2中的元素,并将其存储在新集合exclusive_guests中。

其他有用的操作

检查子集和超集

你可以使用issubset()或者issuperset()方法确定一个集合是否是另一个集合的子集还是超集:

# 使用 issubset() 方法检查子集
print(guest_set1.issubset(all_guests))  # 输出:True

# 使用 issuperset() 方法检查超集
print(all_guests.issuperset(guest_set1))  # 输出:True

示例中,使用issubset()方法检查guest_set1是否是all_guests的子集,以及使用issuperset()方法检查all_guests是否是guest_set1的超集,以此来确定两个集合之间的关系。

清除集合

clear 方法,用于移除集合中的所有元素,从而将集合清空。这个方法会修改原始集合,将其变为一个空集:

# 使用 clear() 方法清除集合
guest_set1.clear()

print(guest_set1)  # 输出:set()

示例中,clear() 方法会删除 guest_set1 中的所有元素,从而将其重置为空集。

结语

通过本教程的学习,你将能充分掌握集合这一强大功能,在 Python 编程中游刃有余的运用。

祝你编码愉快,本教程完。