- 前提背景
- if 判断
- 所有非0的数值都判断为True
- 值为0, 判断为False
- and/or 逻辑运算
- 用于布尔值时
- 用于单个布尔值之间的比较
- 不可用于series这样的多个布尔值https://blog.51cto.com/u_16055028/8969644
- 用于数值时
- 所有非0的数值都判断为True
- 遇到0, 判断为False (转为普通逻辑运算)
- 没有遇到0
- and 返回比较后的值
- or 返回第一个值
- 又有and 又有or 返回第一个and/or的判断结果
- 用于元组, 似乎同上
1 and 2 or 3 # 返回2
1 or 2 and 3 # 返回1
(True, False) and (True, True) # 返回and后面的(True, True)
(True, False) or (True, True) # 返回or前面的(True, False)
(1, 2) and (3, 4) # 返回and后的元组
(1, 2) or (3, 4) # 返回or前的元组
- &/|
- 用于布尔值时
- 可用于单个布尔值
- 可用于series这样的多个布尔值
- 不可用于元组
- 用于数值时
- 位运算
在 Python 中,and
、or
、&
和 |
都是用于进行逻辑运算的,但它们的用法和含义有所不同。
and
和or
是逻辑运算符,主要用于比较两个布尔值或者在条件语句中使用。例如:
a = True
b = False
print(a and b) # 输出 False
print(a or b) # 输出 True
在 Python 中,and
和 or
不仅可以返回 True
或 False
,还可以返回比较后的值¹。例如:
a = 1 and 2 and 3
print(a) # 输出 3,全部都 True,所以回傳最右邊的值
b = 1 and 0 and 2
print(b) # 输出 0,遇到 0 ( False ),回傳第一個 False 的值就是 0
c = 1 or 2 or 3
print(c) # 输出 1,全部都 True,所以回傳第一個值
d = 1 or 0 or 3
print(d) # 输出 1,遇到 0 ( False ),回傳第一個 True 的值就是 1
&
和|
是位运算符,主要用于进行二进制位的运算。例如:
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
print(a & b) # 输出 12 = 0000 1100
print(a | b) # 输出 61 = 0011 1101
如果 a
和 b
是数值变量,那么 &
和 |
就表示位运算,and
和 or
则依据是否非0来决定输出²。例如:
# 1&2,2在二进制里面是10,1在二进制中是01,那么01与运算10得到是0
print(1 & 2) # 输出为 0
print(1 | 2) # 输出为3
希望这个解释能帮助你理解 Python 中 and
、or
、&
和 |
的区别。如果你还有其他问题,欢迎随时向我提问。¹²源: 与必应的对话, 2023/12/26
(1) 邏輯判斷 ( and 和 or ) - Python 教學 | STEAM 教育學習網. https://steam.oxxostudio.tw/category/python/basic/and-or.html.
(2) Python 中 (&,|)和(and,or)之间的区别_python & &&-CSDN博客. https://blog.csdn.net/weixin_40041218/article/details/80868521.
(3) python中的and or的区别_Python:and/or 与 & /| 到底有什么区别 - CSDN博客. https://blog.csdn.net/weixin_39712969/article/details/113502535.
(4) undefined. http://aima.cs.berkeley.edu/data/iris.csv.
标签:返回,输出,False,区别,布尔值,print,True From: https://blog.51cto.com/u_16055028/8982359