首页 > 解决方案 > 在多个列表中

问题描述

我最近对此感到困惑

if 2 in ([1,2] or [3,4]) : print(True)
else: print(False)
#prints True
  1. or是一个布尔运算符,那么它如何应用于列表?
  2. 为什么它的工作原理相同if 2 in [1,2] or [3,4]

标签: pythonsyntaxoperator-precedence

解决方案


  1. 利用any()
print(any(2 in x for x in [[1, 2], [3, 4]]))
  1. oris 对任何类型进行操作,而不仅仅是布尔值。它返回最左边的操作数是真实的,或者False如果没有一个操作数是真实的。所以([1, 2] or [3, 4])等价于[1, 2]因为任何非空列表都是真实的。

一般来说,运营商不会像用英语那样自动分发编程语言。x in (a or b)不一样x in a or x in b。编程语言递归地评估表达式,因此x in (a or b)大致等价于:

temp = a or b
x in temp

推荐阅读