Python 中相等和不等运算符的使用详解
在Python编程中,我们经常需要比较两个对象的值是否相同。Python提供了相等运算符(==)和不等运算符(!=)来实现这一目标。本教程将通过丰富的示例代码,深入探讨这两个运算符的用法。
通过本教程,你将掌握:
- 不等运算符(!=)的语法和应用场景
- 相等运算符(==)的语法及其使用示例
- 使用“is”和“is not”运算符来判断Python对象的身份,即它们是否指向内存中的同一位置。
让我们开始探索吧!
Python 不等运算符的语法
对于任意两个Python对象 obj1
和obj2
,使用不等运算符的语法结构如下:
<obj1> != <obj2>
- 当
obj1
和obj2
的值不相等时,该表达式返回True
。 - 否则,返回
False
。
需要注意的是,obj1
和obj2
可以是各种不同的数据类型,如整数、浮点数、字符串、列表等。
Python 不等运算符的示例代码
下面我们通过一些具体的示例,加深对不等运算符的理解。
不等运算符在数值比较中的应用
这是我们的第一个例子:
num1 = 27
num2 = 3 * 9
num1 != num2
# 输出结果: False
你可以直接在任何Python环境中运行这些代码示例。 num1
的值为27,而num2
的计算结果也是27 (3*9 = 27),因此num1
和num2
的值相等,所以不等运算符返回False
。
让我们看另一个例子:
在下面的代码中,num1
被赋值为整数7,而num2
被赋值为字符串“7”。由于它们的数据类型不同,不等运算符返回True
。
num1 = 7
num2 = "7"
num1 != num2
# 输出结果: True
如果我们把字符串转换为整数,结果会发生什么变化呢?看下面的代码:
num1 = 7
num2 = int("7")
num1 != num2
# 输出结果: False
现在,num1
和num2
都等于整数7,因此不等运算符返回False
。
不等运算符也可以用于比较Python的集合类型,例如列表、元组和集合。
注意:当比较集合类型的数据时,不等运算符会逐个比较集合中的元素。只有当两个集合在对应的位置上存在不相等的元素时,才会返回True
。
以下示例展示了这一点:
list1 = [2, 4, 6, 8]
list2 = [2, 4, 6, 9]
list1 != list2
# 输出结果: True
在上述示例中,list1
和list2
只有一个元素不同,因此不等运算符返回True
。
在条件语句中使用不等运算符
不等运算符经常用作Python条件判断的一部分。
例如,以下代码演示了如何使用不等运算符来判断一个数字是否为奇数。
一个数字不能被2整除,则它是奇数,所以条件可以简化为num%2 != 0
。
num = 7
if(num % 2 != 0):
print("这个数字是奇数。")
else:
print("这个数字是偶数。")
# 输出结果: 这个数字是奇数。
你还可以在列表推导式中使用不等运算符,用来筛选出符合特定条件的元素。下面的例子中,odd_10
是一个包含所有小于10的奇数的列表。
odd = [num for num in range(10) if num % 2 != 0]
print(odd)
# 输出结果: [1, 3, 5, 7, 9]
至此,我们完成了对不等运算符(!=)的讨论。正如你可能已经猜到的那样,相等运算符的作用与不等运算符相反。
在下一节中,你将学习更多关于相等运算符的知识。
Python 相等运算符的语法
以下是Python相等运算符的语法:
<obj1> == <obj2> # <obj1>和<obj2>是有效的Python对象
- 当
obj1
和obj2
的值相等时,该表达式返回True
。 - 否则,返回
False
。
Python 相等运算符的示例代码
相等运算符(==)的使用方式与不等运算符非常相似。
让我们编写以下示例:
- 检查两个字符串是否相等
- 检查一个数字是否是偶数
- 在列表推导式中使用条件
相等运算符在比较中的应用
在下面的代码片段中,str1
和str2
的值相等,所以相等运算符(==)返回True
。
str1 = "coding"
str2 = "coding"
str1 == str2
# 输出结果: True
Python的相等运算符
现在,让我们在条件表达式中使用相等运算符。
注意:能被2整除的数字是偶数,所以在代码中,这可以简化为条件num%2 == 0
。
num = 10
if(num % 2 == 0):
print("这个数字是偶数。")
else:
print("这个数字是奇数。")
# 输出结果: 这个数字是偶数。
现在,让我们以此为基础,使用Python的列表推导式来获取所有小于10的偶数。
even_10 = [num for num in range(10) if num % 2 == 0]
print(even_10)
# 输出结果: [0, 2, 4, 6, 8]
在上述示例中:
range(10)
返回一个范围对象,用于生成从0到9的所有整数。- 条件
num%2 == 0
仅对偶数成立。 - 因此,
even_10
是所有小于10的偶数列表。
到目前为止,你已经学习了如何使用不等运算符(!=)和相等运算符(==)来检查值是否相等。
在下一节中,你将学习如何验证两个对象的身份,即它们是否是同一个对象。
如何使用 Python 的 “is” 和 “is not” 运算符
如果你是Python编程的初学者,你可能会对==
和is
运算符感到困惑。让我们在本节中澄清这一点。
在上一节中,我们有一个示例,其中str1
和str2
的值相等,并且==
运算符返回True
。
现在运行以下代码片段。
str1 = "coding"
str2 = "coding"
str1 is str2
# 输出结果: False
可以看到,str1 is str2
返回False
。
让我们退后一步,了解Python的is
运算符的作用。
is
运算符对任意两个Python对象进行操作,仅当两个对象是同一个对象时才返回True
,这意味着它们在内存中引用的是同一块地址。
即使str1
等于str2
,str1 is str2
返回False
,因为它们指向内存中的两个不同对象。因此,它们具有不同的身份。
在Python中,你可以使用id()
函数来获取对象的身份。
▶ 运行以下代码单元以获取str1
和str2
的身份。
id(str1)
# 示例输出: 139935398870320
id(str2)
# 示例输出: 139935398871344
如你所见,str1
和str2
具有不同的标识。因此,str1 is str2
按预期返回False
。
综上所述:
<obj1> is <obj2> # 当且仅当
id(<obj1>) == id(<obj2>) # 返回 True 时,返回 True
让我们快速验证一下,如下图所示:
str1 = "coding"
str2 = str1
print(str1 is str2)
print(id(str1) == id(str2))
# 输出
True
True
直观地说,is not
运算符与is
运算符相反。
is not
运算符对任意两个Python对象进行操作。仅当两个对象不是同一个对象时才返回True
,即它们在内存中不是同一块地址。否则,它返回False
。
在上面的代码示例中,尝试将is
替换为is not
并检查结果。
结论
希望本教程对你有所帮助。
总结一下,你学到了:
- 如何使用相等(==)和不等(!=)运算符来检查两个Python对象是否具有相同的值
- Python对象的相等性和同一性之间的区别
- Python的
is
和is not
运算符如何帮助检查两个Python对象是否是同一个对象。
点击此处学习如何在Python中计算时间差或制作贪吃蛇游戏。
下篇教程再见,祝你学习愉快,编程顺利!🎉