介绍
在这个实验中,你将学习如何在 Python 中判断一个变量是否为集合。你将首先了解集合的基本特征,包括其无序性和元素的唯一性。通过实践练习,你将使用花括号和 set() 构造函数来创建集合,并探索常见的集合操作,如添加和删除元素,以及检查元素是否存在。
然后,本实验将指导你使用 type() 函数和 isinstance() 函数来确定一个变量是否确实是集合。在本实验结束时,你将具备在 Python 代码中自信地识别集合的知识和技能。
了解集合
在这一步中,你将学习 Python 中的集合。集合是唯一元素的无序集合。这意味着集合不能包含重复的值,并且集合中元素的顺序是不确定的。集合对于执行数学集合操作(如并集、交集和差集)非常有用。
让我们从创建一个集合开始。你可以使用花括号 {} 或 set() 构造函数来创建集合。
在 LabEx 环境中打开 VS Code 编辑器。
在
~/project目录下创建一个名为sets_example.py的新文件。## Create a set using curly braces my_set = {1, 2, 3, 4, 5} print(my_set) ## Create a set using the set() constructor another_set = set([3, 4, 5, 6, 7]) print(another_set)在终端中使用
python命令运行脚本:python ~/project/sets_example.py你应该会看到以下输出:
{1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
现在,让我们探索一些常见的集合操作。
在你的
sets_example.py文件中添加以下代码:## Add an element to a set my_set.add(6) print(my_set) ## Remove an element from a set my_set.remove(1) print(my_set) ## Check if an element is in a set print(3 in my_set) print(1 in my_set)再次运行脚本:
python ~/project/sets_example.py你应该会看到类似以下的输出:
{1, 2, 3, 4, 5, 6} {2, 3, 4, 5, 6} True False
集合在从列表中去除重复元素方面特别有用。
在你的
sets_example.py文件中添加以下代码:## Create a list with duplicate elements my_list = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] print(my_list) ## Convert the list to a set to remove duplicates unique_elements = set(my_list) print(unique_elements)运行脚本:
python ~/project/sets_example.py输出应该是:
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4] {1, 2, 3, 4}
如你所见,集合 unique_elements 只包含原始列表中的唯一元素。
使用 type() 进行识别
在这一步中,你将学习如何使用 Python 中的 type() 函数来识别变量的数据类型。理解数据类型对于编写正确且高效的代码至关重要。
type() 函数返回对象的数据类型。让我们看看它在不同数据类型上是如何工作的。
在 LabEx 环境中打开 VS Code 编辑器。
在
~/project目录下创建一个名为type_example.py的新文件。## Check the type of an integer x = 10 print(type(x)) ## Check the type of a float y = 3.14 print(type(y)) ## Check the type of a string z = "Hello" print(type(z)) ## Check the type of a boolean a = True print(type(a)) ## Check the type of a list b = [1, 2, 3] print(type(b)) ## Check the type of a tuple c = (1, 2, 3) print(type(c)) ## Check the type of a set d = {1, 2, 3} print(type(d)) ## Check the type of a dictionary e = {"name": "Alice", "age": 30} print(type(e))在终端中使用
python命令运行脚本:python ~/project/type_example.py你应该会看到以下输出:
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'list'> <class 'tuple'> <class 'set'> <class 'dict'>
输出显示了每个变量的数据类型。例如,<class 'int'> 表示该变量是整数,<class 'str'> 表示该变量是字符串。
理解变量的数据类型很重要,因为它决定了你可以对该变量执行哪些操作。例如,你可以对整数和浮点数执行算术运算,但不能对字符串执行此类操作。
让我们来看一个示例,展示如何在执行操作之前使用 type() 函数检查变量是否为特定类型。
在你的
type_example.py文件中添加以下代码:## Check if a variable is an integer before adding 5 to it num = 10 if type(num) == int: result = num + 5 print(result) else: print("Variable is not an integer") ## Check if a variable is a string before concatenating it with another string text = "Hello" if type(text) == str: greeting = text + ", World!" print(greeting) else: print("Variable is not a string")再次运行脚本:
python ~/project/type_example.py你应该会看到以下输出:
15 Hello, World!
在这个示例中,type() 函数分别用于在执行加法和拼接操作之前,检查变量 num 是否为整数以及变量 text 是否为字符串。
使用 isinstance() 进行确认
在这一步中,你将学习如何使用 Python 中的 isinstance() 函数来确认一个对象是否是某个特定类或类型的实例。与使用 type() 相比,这是一种更可靠且推荐的检查数据类型的方法。
isinstance() 函数接受两个参数:要检查的对象以及要与之进行比较的类或类型。如果对象是指定类或类型的实例,则返回 True,否则返回 False。
在 LabEx 环境中打开 VS Code 编辑器。
在
~/project目录下创建一个名为isinstance_example.py的新文件。## Check if a variable is an integer x = 10 print(isinstance(x, int)) ## Check if a variable is a float y = 3.14 print(isinstance(y, float)) ## Check if a variable is a string z = "Hello" print(isinstance(z, str)) ## Check if a variable is a boolean a = True print(isinstance(a, bool)) ## Check if a variable is a list b = [1, 2, 3] print(isinstance(b, list)) ## Check if a variable is a tuple c = (1, 2, 3) print(isinstance(c, tuple)) ## Check if a variable is a set d = {1, 2, 3} print(isinstance(d, set)) ## Check if a variable is a dictionary e = {"name": "Alice", "age": 30} print(isinstance(e, dict))在终端中使用
python命令运行脚本:python ~/project/isinstance_example.py你应该会看到以下输出:
True True True True True True True True
所有变量都是我们所检查类型的实例,因此在每种情况下 isinstance() 都返回了 True。
isinstance() 在处理继承时特别有用。如果一个类继承自另一个类,那么该子类的对象也被视为父类的实例。
在你的
isinstance_example.py文件中添加以下代码:class Animal: pass class Dog(Animal): pass my_dog = Dog() ## Check if my_dog is an instance of Dog print(isinstance(my_dog, Dog)) ## Check if my_dog is an instance of Animal print(isinstance(my_dog, Animal))再次运行脚本:
python ~/project/isinstance_example.py你应该会看到以下输出:
True True
在这个例子中,Dog 类继承自 Animal 类。因此,my_dog 既是 Dog 类的实例,也是 Animal 类的实例。
通常,使用 isinstance() 比使用 type() 更受青睐,因为它能正确处理继承关系,并且更加灵活。
总结
在本次实验中,你学习了 Python 中的集合(set),它是无序且元素唯一的集合。你使用花括号 {} 和 set() 构造函数创建了集合,并执行了诸如添加和移除元素等常见的集合操作。
此外,你还探索了如何通过将列表转换为集合来去除列表中的重复元素。你也学会了如何使用 in 运算符来检查元素是否存在于集合中。



