介绍
在这个实验中,你将学习如何在 Python 中判断一个集合是否是另一个集合的子集。你将从理解子集的概念开始,创建两个集合 set1 和 set2,以探究它们之间的关系。你将使用 issubset() 方法编写一个 Python 脚本,来检查 set1 是否是 set2 的子集,并根据 set1 的所有元素是否都存在于 set2 中,观察输出结果为 True 或 False。
然后,实验将更深入地探讨 issubset() 方法,通过探索不同的场景来巩固你的理解。你将修改集合中的元素并重新运行脚本,观察输出结果如何变化,从而强化子集的概念以及 issubset() 方法的功能。
理解子集
在这一步中,你将学习 Python 中的子集概念。子集是指其所有元素都包含在另一个集合中的集合。理解子集对于各种编程任务至关重要,例如数据验证、过滤和关系分析。
让我们从创建两个集合开始:
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
在这里,set1 包含元素 1、2 和 3,而 set2 包含元素 1、2、3、4 和 5。我们要确定 set1 是否是 set2 的子集。
为此,你需要使用 VS Code 编辑器在 ~/project 目录下创建一个名为 subset_check.py 的 Python 脚本。打开 VS Code,在 ~/project 目录下创建一个名为 subset_check.py 的新文件。
现在,将以下代码添加到 subset_check.py 中:
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
is_subset = set1.issubset(set2)
print(is_subset)
保存文件。
接下来,在终端中使用 python 命令执行脚本:
python subset_check.py
输出结果将是:
True
这表明 set1 确实是 set2 的子集,因为 set1 中的所有元素也都存在于 set2 中。
现在,让我们考虑另一个例子,其中 set1 不是 set2 的子集:
将 subset_check.py 文件修改为以下内容:
set1 = {1, 2, 6}
set2 = {1, 2, 3, 4, 5}
is_subset = set1.issubset(set2)
print(is_subset)
保存文件并再次运行:
python subset_check.py
输出结果将是:
False
这是因为 set1 包含元素 6,而该元素不在 set2 中。因此,set1 不是 set2 的子集。
使用 issubset() 方法
在上一步中,你学习了子集的基本概念,并看到了一个使用 issubset() 方法的简单示例。在这一步中,我们将通过不同的场景更详细地探索 issubset() 方法。
issubset() 方法是 Python 的一个内置方法,可用于集合。如果一个集合的所有元素都存在于另一个集合中(即该集合是另一个集合的子集),则该方法返回 True,否则返回 False。
让我们考虑一个场景,我们有两个表示技能的集合:
skills1 = {"Python", "Data Analysis"}
skills2 = {"Python", "Data Analysis", "Machine Learning", "SQL"}
在这里,skills1 代表初级数据科学家的技能,而 skills2 代表高级数据科学家所需的技能。我们想检查初级数据科学家的技能是否是高级数据科学家所需技能的子集。
使用 VS Code 打开 ~/project 目录下的 subset_check.py 文件。将文件内容修改为以下内容:
skills1 = {"Python", "Data Analysis"}
skills2 = {"Python", "Data Analysis", "Machine Learning", "SQL"}
is_subset = skills1.issubset(skills2)
print(is_subset)
保存文件。
现在,在终端中使用 python 命令执行脚本:
python subset_check.py
输出结果将是:
True
这表明 skills1 是 skills2 的子集,意味着初级数据科学家的技能是高级数据科学家所需技能的子集。
让我们考虑另一个场景,其中 skills1 不是 skills2 的子集:
将 subset_check.py 文件修改为以下内容:
skills1 = {"Python", "Data Analysis", "Cloud Computing"}
skills2 = {"Python", "Data Analysis", "Machine Learning", "SQL"}
is_subset = skills1.issubset(skills2)
print(is_subset)
保存文件并再次运行:
python subset_check.py
输出结果将是:
False
这是因为 skills1 包含“Cloud Computing”,而该技能不在 skills2 中。因此,skills1 不是 skills2 的子集。
使用 <= 运算符进行检查
在上一步中,你学习了如何使用 issubset() 方法来检查一个集合是否是另一个集合的子集。在这一步中,你将学习使用 <= 运算符来检查子集的另一种方法。
<= 运算符可用于检查一个集合是否是另一个集合的子集。如果左边的集合是右边集合的子集,则返回 True,否则返回 False。
让我们回顾上一步中的技能示例:
skills1 = {"Python", "Data Analysis"}
skills2 = {"Python", "Data Analysis", "Machine Learning", "SQL"}
我们想使用 <= 运算符检查 skills1 是否是 skills2 的子集。
使用 VS Code 打开 ~/project 目录下的 subset_check.py 文件。将文件内容修改为以下内容:
skills1 = {"Python", "Data Analysis"}
skills2 = {"Python", "Data Analysis", "Machine Learning", "SQL"}
is_subset = skills1 <= skills2
print(is_subset)
保存文件。
现在,在终端中使用 python 命令执行脚本:
python subset_check.py
输出结果将是:
True
这表明 skills1 确实是 skills2 的子集。
让我们考虑另一个场景,其中 skills1 不是 skills2 的子集:
将 subset_check.py 文件修改为以下内容:
skills1 = {"Python", "Data Analysis", "Cloud Computing"}
skills2 = {"Python", "Data Analysis", "Machine Learning", "SQL"}
is_subset = skills1 <= skills2
print(is_subset)
保存文件并再次运行:
python subset_check.py
输出结果将是:
False
这是因为 skills1 包含“Cloud Computing”,而该技能不在 skills2 中。因此,skills1 不是 skills2 的子集。
需要注意的是,如果两个集合相等,<= 运算符也会返回 True。例如:
set1 = {1, 2, 3}
set2 = {1, 2, 3}
is_subset = set1 <= set2
print(is_subset)
输出结果将是 True,因为 set1 和 set2 相等。如果你想检查 set1 是否是 set2 的 真子集(即 set1 是 set2 的子集但不等于 set2),可以使用 < 运算符。
总结
在这个实验中,你学习了如何在 Python 中检查一个集合是否是另一个集合的子集。你首先了解了子集的概念,即如果一个集合的所有元素都包含在另一个集合中,那么这个集合就被认为是另一个集合的子集。
然后,你使用 issubset() 方法来判断一个集合是否是另一个集合的子集。通过创建 Python 脚本并执行它们,你观察到当第一个集合的所有元素都存在于第二个集合中时,issubset() 方法返回 True,否则返回 False。



