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)
发电机的进一步说明.
你可以使用套装:
l = { 'a', 'b', 'c', 'd', 'e' }
if { 'a', 'b', 'c', 'd' } <= l:
pass
Run Code Online (Sandbox Code Playgroud)
l = "abcde"
if all(c in l for c in "abcd"):
pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |