blu*_*inc 23 python if-statement
我目前正在这样做:
if x in a and y in a and z in a and q in a and r in a and s in a:
print b
Run Code Online (Sandbox Code Playgroud)
是否有更多的pythonic方式来表达这种if说法?
Bas*_*els 29
使用all函数可以以一种漂亮而紧凑的方式编写它:
if all(i in a for i in (x, y, z, q, r, s)):
print b
Run Code Online (Sandbox Code Playgroud)
这段代码应该与您的示例几乎完全相同,即使对象不可散列或者a对象有一些有趣的__contains__方法.该all功能也具有与原始问题中的链类似的短路行为and.在元组(或列表)中收集要测试的所有对象将保证与原始问题中的测试执行顺序相同.如果您使用集合,则订单可能是随机的.
Tha*_*all 18
另一种方法是使用子集:
if {x, y, z, q, r, s}.issubset(a):
print(b)
Run Code Online (Sandbox Code Playgroud)
REPL示例:
>>> {0, 1, 2}.issubset([0, 1, 2, 3])
True
>>> {0, 1, 2}.issubset([1, 2, 3])
False
Run Code Online (Sandbox Code Playgroud)
这种方法的一个需要注意的是,所有的x,y,z等一定要哈希的.
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |