python - 测试值是否存在于多个列表中

标签 python list list-comprehension boolean-logic

我想检查每个列表中是否存在一个值。

以下按预期返回 True,但似乎不是 Pythonic。

执行此操作的正确/更优雅的方法是什么?

a = [1 ,2]
b = [1, 3]
c = [1, 4]
d = [2, 5]

False in [True if 1 in l else False for l in [a, b, c, d]  ]

最佳答案

您可以使用 all和一个 generator expression :

all(1 in x for x in (a, b, c, d))

演示:

>>> a = [1 ,2]
>>> b = [1, 3]
>>> c = [1, 4]
>>> d = [2, 5]
>>> all(1 in x for x in (a, b, c, d))
False
>>> all(1 in x for x in (a, b, c))
True
>>>

除了更具可读性之外,该解决方案还更加高效,因为它使用了惰性求值。它只会检查确定结果所需的项目数。

此外,从来没有一个好的理由去做:

True if 1 in l else False

或类似的东西,因为 in 已经返回 bool 结果。您只需要:

1 in l

对于否定版本,使用:

1 not in l

关于python - 测试值是否存在于多个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27715213/

相关文章:

python - inline 和通常的 for 循环的结果是不同的

python - 列表理解中的 "If...or..."语句?

python - 如何按方括号之间的内容进行数字排序

Python Flask GoogleMaps获取用户当前位置经纬度

python - 不应该在下面的代码中缩进

c++ - 将字符串列表插入二维 vector

python - 我需要创建一个字典来计算名称在列表中出现的次数

list - 为什么我的谓词在序言中返回列表列表?

python - Python 中链表表达式的正确样式

python - 获得 model.predict_generator 的测试精度