raw*_*evo 5 python boolean-logic list-comprehension list
我想检查每个列表中是否存在值.
以下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] ]
Run Code Online (Sandbox Code Playgroud)
iCo*_*dez 12
all(1 in x for x in (a, b, c, d))
Run Code Online (Sandbox Code Playgroud)
演示:
>>> 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
>>>
Run Code Online (Sandbox Code Playgroud)
除了更具可读性之外,此解决方案更有效,因为它使用延迟评估.它只会检查确定结果所需的项目数.
此外,没有充分的理由:
True if 1 in l else False
Run Code Online (Sandbox Code Playgroud)
或类似的东西,因为in
已经返回一个布尔结果.所有你需要的是:
1 in l
Run Code Online (Sandbox Code Playgroud)
对于否定版本,请使用:
1 not in l
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
875 次 |
最近记录: |