• 前提背景
  • if 判断
  • 所有非0的数值都判断为True
  • 值为0, 判断为False


  • and/or 逻辑运算
  • 用于布尔值时
  • 用于数值时
  • 所有非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 中,andor&| 都是用于进行逻辑运算的,但它们的用法和含义有所不同。

  • andor 是逻辑运算符,主要用于比较两个布尔值或者在条件语句中使用。例如:
a = True
b = False
print(a and b)  # 输出 False
print(a or b)   # 输出 True

在 Python 中,andor 不仅可以返回 TrueFalse,还可以返回比较后的值¹。例如:

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

如果 ab 是数值变量,那么 &| 就表示位运算,andor 则依据是否非0来决定输出²。例如:

# 1&2,2在二进制里面是10,1在二进制中是01,那么01与运算10得到是0
print(1 & 2)  # 输出为 0
print(1 | 2)  # 输出为3

希望这个解释能帮助你理解 Python 中 andor&| 的区别。如果你还有其他问题,欢迎随时向我提问。¹²源: 与必应的对话, 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.