l = ["a", "b", "c", "d", "e"]
if "a" in l and "b" in l and "c" in l and "d" in l:
pass
寫這個if語句的方法是什麼?Python中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語句的方法是什麼?Python中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
所有作爲輸入任何類型的迭代,並檢查所有元素的迭代器發出,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進一步解釋。
非常乾淨的說明 –
@MoinuddinQuadri:謝謝你的評價:)。 –
l = "abcde"
if all(c in l for c in "abcd"):
pass
我認爲OP在這裏給出了一個char字符串的例子,顯然在現實生活中可能會檢查多個char字符串,但仍然是很好的答案。 –
您可以使用集:
l = { 'a', 'b', 'c', 'd', 'e' }
if { 'a', 'b', 'c', 'd' } <= l:
pass
一種不同的方法是使用幾組:
l = ['a', 'b', 'c', 'd', 'e']
if set(['a', 'b', 'c', 'd']).issubset(set(l)):
pass
你也可以使用這樣的情況下set
對象:
l = ["a", "b", "c", "d", "e"]
if set(l) >= set(("a", "b", "c", "d")):
print('pass')
set> = other
測試其他元素是否在集合中。
https://docs.python.org/3/library/stdtypes.html?highlight=set#set.issuperset
聞訊趕來'all'和'any'? –
請注意,第二個片段評估爲「如果」一個「in:」。 – jonrsharpe