Python - 集合练习

大家好,未来的Python巫师们!今天,我们将深入探讨神奇的Python集合世界。如果你以前从未编写过代码,也不要担心——我将作为你友好的向导,带你开启这段激动人心的旅程。在本教程结束时,你将能够像专业人士一样熟练地使用集合!

Python - Set Exercises

什么是集合?

在我们开始练习之前,先快速了解一下Python中的集合是什么。想象你有一袋弹珠,但每个弹珠在袋子中只能出现一次。本质上,Python中的集合就是这样的——一组唯一的元素。

集合是无序的,这意味着元素没有特定的位置。它们也是可变的,因此我们可以添加或删除元素。但是,元素本身必须是不可变的(如数字或字符串,而不是列表)。

现在,让我们卷起袖子开始编码吧!

Python集合练习1:创建和操作集合

创建一个集合

首先,我们创建一个简单的集合:

fruits = {"苹果", "香蕉", "樱桃"}
print(fruits)

运行这段代码后,你会看到:

{'樱桃', '香蕉', '苹果'}

注意到输出的顺序与我们输入的不同吗?这是因为集合是无序的!

向集合中添加元素

现在,让我们向集合中添加更多水果:

fruits.add("火龙果")
print(fruits)

fruits.update(["接骨木", "无花果"])
print(fruits)

输出:

{'樱桃', '香蕉', '苹果', '火龙果'}
{'无花果', '樱桃', '香蕉', '接骨木', '苹果', '火龙果'}

看到我们是如何使用add()添加单个元素,而使用update()添加多个元素的吗?这就像往你的袋子里放一个弹珠和倒一把弹珠的区别!

从集合中移除元素

让我们移除一些水果:

fruits.remove("香蕉")
print(fruits)

fruits.discard("葡萄")  # 即使"葡萄"不在集合中,这也不会引发错误
print(fruits)

输出:

{'无花果', '樱桃', '接骨木', '苹果', '火龙果'}
{'无花果', '樱桃', '接骨木', '苹果', '火龙果'}

remove()如果元素不存在将会引发错误,而discard()则不会。这就像小心翼翼地从袋子里挑选一个特定的弹珠,而不是随便找一个来移除。

Python集合练习2:集合操作

现在我们已经掌握了基础知识,让我们来玩多个集合!

集合并集

想象你和你的朋友都有弹珠袋。并集是你们在一起拥有的所有独特的弹珠。

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
union_set = set1.union(set2)
print(union_set)

输出:

{1, 2, 3, 4, 5, 6, 7, 8}

集合交集

交集是你们共同拥有的弹珠。

intersection_set = set1.intersection(set2)
print(intersection_set)

输出:

{4, 5}

集合差集

差集是你有你朋友没有的弹珠。

difference_set = set1.difference(set2)
print(difference_set)

输出:

{1, 2, 3}

Python集合练习3:高级集合操作

准备好了吗?让我们来挑战一些更高级的操作!

对称差集

这将给出所有在任一集合中但不在两个集合中都有的弹珠。

symmetric_difference = set1.symmetric_difference(set2)
print(symmetric_difference)

输出:

{1, 2, 3, 6, 7, 8}

子集和超集

让我们检查一个集合是否包含在另一个集合中:

set3 = {1, 2, 3}
print(set3.issubset(set1))  # set3是set1的子集吗?
print(set1.issuperset(set3))  # set1是set3的超集吗?

输出:

True
True

这就像检查你的所有弹珠是否也在你朋友更大的收藏中!

冻结集合

有时,我们需要一个不能更改的集合。这时候可以使用冻结集合:

frozen_fruits = frozenset(["苹果", "香蕉", "樱桃"])
print(frozen_fruits)

# 这将引发错误:
# frozen_fruits.add("火龙果")

输出:

frozenset({'樱桃', '香蕉', '苹果'})

将冻结集合想象成密封在冰中的弹珠袋——你可以看,但不能触摸!

集合方法总结

以下是我们学到的集合方法的有用表格:

方法 描述
add() 向集合中添加一个元素
update() 用另一个集合或可迭代对象的元素更新集合
remove() 移除指定的元素(如果找不到则引发错误)
discard() 移除指定的元素(如果找不到则不引发错误)
union() 返回包含集合的并集的集合
intersection() 返回包含集合的交集的集合
difference() 返回包含集合差集的集合
symmetric_difference() 返回包含两个集合中不重叠的元素的集合
issubset() 检查一个集合是否是另一个集合的子集
issuperset() 检查一个集合是否是另一个集合的超集

就是这些了,各位!你刚刚通过集合提升了你的Python技能。记住,熟能生巧,所以继续练习这些概念。在你意识到之前,你将能够像一个真正的Python巫师一样操纵集合!

Credits: Image by storyset