python中if语句的缩写方式

rre*_*ase 6 python if-statement

l = ["a", "b", "c", "d", "e"]
if "a" in l and "b" in l and "c" in l and "d" in l:
   pass
Run Code Online (Sandbox Code Playgroud)

写这个if语句的简短方法是什么?

尝试:

if ("a" and "b" and "c" and "d") in l:
    pass
Run Code Online (Sandbox Code Playgroud)

但这似乎是不正确的.什么是正确的方法?Python 3

Wil*_*sem 11

一个想法可能是使用all(..)和生成器:

if all(x in l for x in ['a','b','c','d']):
    pass
Run Code Online (Sandbox Code Playgroud)

All将任何类型的iterable视为输入,并检查可迭代发出的所有元素bool(..)是否为True.

现在all我们内部使用发电机.发电机的工作方式如下

<expr> for <var> in <other-iterable>
Run Code Online (Sandbox Code Playgroud)

(没有牙套)

因此它占据了每个元素<other-iterable>并调用<expr>它.在这种情况下,<expr>x in l,并且x<var>:

#         <var>
#           |
 x in l for x in ['a','b','c','d']
#\----/          \---------------/
#<expr>           <other-iterable>
Run Code Online (Sandbox Code Playgroud)

发电机的进一步说明.

  • 非常干净的解释 (3认同)

Alf*_*lfe 6

你可以使用套装:

l = { 'a', 'b', 'c', 'd', 'e' }

if { 'a', 'b', 'c', 'd' } <= l:
    pass
Run Code Online (Sandbox Code Playgroud)


Rem*_*ich 5

l = "abcde"
if all(c in l for c in "abcd"):
    pass
Run Code Online (Sandbox Code Playgroud)

  • 我认为OP在这里给出了一个带有一个char字符串的例子,显然在现实生活中可能会检查多字符串字符串,但不过很好的答案. (2认同)