python中if语句的缩写方式

时间:2017-01-17 22:05:45

标签: 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

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

尝试:

if ("a" and "b" and "c" and "d") in l:
    pass

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

5 个答案:

答案 0 :(得分:11)

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

if all(x in l for x in ['a','b','c','d']):
    pass

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

现在all内我们使用了一台发电机。生成器的工作方式如下:

<expr> for <var> in <other-iterable>

(没有大括号)

它因此需要<other-iterable>中的每个元素并在其上调用<expr>。在这种情况下,<expr>x in lx<var>

#         <var>
#           |
 x in l for x in ['a','b','c','d']
#\----/          \---------------/
#<expr>           <other-iterable>

generators的进一步解释。

答案 1 :(得分:6)

您可以使用套装:

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

if { 'a', 'b', 'c', 'd' } <= l:
    pass

答案 2 :(得分:5)

l = "abcde"
if all(c in l for c in "abcd"):
    pass

答案 3 :(得分:4)

另一种方法是使用集合:

l = ['a', 'b', 'c', 'd', 'e']
if set(['a', 'b', 'c', 'd']).issubset(set(l)):
  pass

答案 4 :(得分:2)

对于这种情况,您也可以使用set个对象:

l = ["a", "b", "c", "d", "e"]
if  set(l) >= set(("a", "b", "c", "d")):
    print('pass')
  

设置&gt; =其他

     

测试其他元素是否在集合中。

https://docs.python.org/3/library/stdtypes.html?highlight=set#set.issuperset