我想检查每个列表中是否存在一个值。
以下按预期返回 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/