<分区>
l = ["a", "b", "c", "d", "e"]
if "a" in l and "b" in l and "c" in l and "d" in l:
pass
编写此 if 语句的更短方式是什么?
尝试过:
if ("a" and "b" and "c" and "d") in l:
pass
但这似乎是不正确的。什么是正确的方法? Python 3
<分区>
l = ["a", "b", "c", "d", "e"]
if "a" in l and "b" in l and "c" in l and "d" in l:
pass
编写此 if 语句的更短方式是什么?
尝试过:
if ("a" and "b" and "c" and "d") in l:
pass
但这似乎是不正确的。什么是正确的方法? Python 3
最佳答案
一个想法可能是使用 all(..)
和一个生成器:
if all(x in l for x in ['a','b','c','d']):
pass
All 将任何类型的可迭代对象作为输入,并检查可迭代对象发出的所有元素,bool(..)
是True
.
现在在 all
内我们使用发电机。生成器的工作方式如下:
<expr> for <var> in <other-iterable>
(没有大括号)
因此它获取了 <other-iterable>
中的每个元素并调用 <expr>
在上面。在这种情况下 <expr>
是x in l
, 和 x
是 <var>
:
# <var>
# |
x in l for x in ['a','b','c','d']
#\----/ \---------------/
#<expr> <other-iterable>
进一步解释generators .
关于python - python中if语句的更短方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41707841/