在 Python 中链接比较运算符


检查两个以上的条件在编程语言中很常见。假设我们要检查以下条件:

a < b < c

最常见的语法如下:

if a < b and b < c :
   {...}

在 Python 中,有一种更好的方法是使用比较运算符 Chaining来编写它。运算符的链接可以写成如下:

if a < b < c :
    {.....}

根据Python 中的结合性和优先级,Python 中的所有比较操作都具有相同的优先级,低于任何算术、移位或按位运算的优先级。同样与 C 不同的是,像 a < b < c 这样的表达式具有数学中的常规解释。Python 中的比较运算符列表:

">" | "<" | "==" | ">=" | "<=" | "!=" | "is" ["not"] | ["not"] "in"

链接比较运算符:

  1. 比较产生布尔值:True 或 False。
  2. 比较可以任意链接。例如:
x < y <= z is equivalent to x < y and y <= z,
  1. 除了 y 只被评估一次。(但在这两种情况下,当发现 x < y 为假时,根本不会评估 z)。
  2. 形式上,如果 a, b, c, …, y, z 是表达式,op1, op2, …, opN 是比较运算符,那么 an op1 b op2 c … y opN z 等价于 a op1 b and b op2 c and … y opN z,除了每个表达式最多计算一次。
  3. Also
a op1 b op2 c

它并不意味着 a 和 c 之间有任何类型的比较,所以

a < b > c

是完全合法的。

  • Python
# Python code to illustrate
# chaining comparison operators
x = 5
print(1 < x < 10)
print(10 < x < 20 )
print(x < 10 < x*10 < 100)
print(10 > x <= 9)
print(5 == x > 4)

输出

True
False
True
True
True

另一个例子:

  • Python
# Python code to illustrate
# chaining comparison operators
a, b, c, d, e, f = 0, 5, 12, 0, 15, 15
exp1 = a <= b < c > d is not e is f
exp2 = a is d > f is not c
print(exp1)
print(exp2)

输出

True
False

解释:

在 Python 中,链接比较运算符是一种通过使用逻辑运算符将它们串在一起来简化多个比较运算的方法。这也称为“链式比较”或“链式比较运算符”。

在链式比较中,两个或多个比较运算符与逻辑运算符(例如 and or or)组合在一起。这允许您将多个值或变量与单个表达式进行比较。

下面是链接比较运算符的示例:

  • Python3
x = 5
y = 10
z = 15

if x < y < z:
    print("y is greater than x and less than z")

输出

y is greater than x and less than z

在此示例中,我们使用小于 (<) 运算符比较 x 和 y,然后再次比较 y 和 z。逻辑运算符 and 用于组合两个比较。结果是,仅当 x 小于 y 且 y 小于 z 时,整个表达式的计算结果为 True。如果满足此条件,if 语句中的代码将执行。

链接比较运算符可以使您的代码更加简洁和可读,因为它允许您将多个比较组合到一个表达式中。但是,使用括号来阐明运算顺序很重要,因为逻辑运算符 and 和 or 具有不同的优先级。如果括号使用不当,表达式可能无法按预期计算。

例如:

  • Python3
x=5
y=10
z=15

if x < y or y < z and z < x:
    print("This will not be printed as expected!")

输出

This will not be printed as expected!

在这种情况下,and 运算符的优先级高于 or 运算符。如果没有括号,表达式将被计算为 x < y 或(y < z 和 z < x),这不是预期的结果。为了解决这个问题,我们可以使用括号来阐明操作顺序:

  • Python3
x=5
y=10
z=15


if (x < y or y < z) and z < x:
    print("This will be printed as expected")

现在,表达式将被计算为 (x < y or y < z) and z < x,这正确地反映了预期的逻辑。

为什么我们在 Python 中使用 Chaining 比较运算符:

Python 中的链接比较运算符可以使代码更加简洁和可读,因为它允许您将多个比较组合到一个表达式中。它还可以通过减少需要执行的单独比较的数量来帮助提高代码性能。

链式比较运算符在处理数字数据或比较具有自然顺序的值(例如日期或时间)时特别有用。例如,当比较两个值 a 和 b 时,您可能想检查 a 是否小于 b 以及 b 是否小于 c。使用链式比较,您可以将其表示为 a < b < c 而不是 a < b 和 b < c。

链式比较运算符在处理布尔表达式时也很有用。例如,您可能想要检查两个条件是否都为真。使用链式比较,您可以将其表示为条件 1 和条件 2。

总的来说,链接比较运算符可以使代码更简洁、更易于阅读和更高效。但是,使用括号来阐明运算顺序很重要,因为逻辑运算符 and 和 or 具有不同的优先级。如果括号使用不当,表达式可能无法按预期计算。


原文链接:codingdict.net