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
答案 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 l
,x
为<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