我想知道是否有任何捷徑做到以下幾點:Python - 如何檢查是否滿足幾個條件之一,然後特別是如果滿足每個條件?
if a or b or c ...
do p
if a
do x
if b
do y
if c
do z
...
else
do q
是否有必要打出來的每個條件的兩倍或有任何其他方式做到這一點?
我想知道是否有任何捷徑做到以下幾點:Python - 如何檢查是否滿足幾個條件之一,然後特別是如果滿足每個條件?
if a or b or c ...
do p
if a
do x
if b
do y
if c
do z
...
else
do q
是否有必要打出來的每個條件的兩倍或有任何其他方式做到這一點?
有沒有錯,你的代碼,但如果檢查任何的a
,b
或c
是昂貴的,你可以使用一個標誌,而不是作爲檢查的條件只有一次:
flag = False
if a:
flag = True
do x
if b:
flag = True
do y
if c:
flag = True
do z
do (p if flag else q)
我覺得這形式也更易讀,因爲它只有縮進一個水平上,但我想這只是喜好的問題...
編輯:如果p
必須執行之前x
,y
,z
,那麼你可以存儲條件的結果檢查來代替:
doers = [x, y, z]
conditions = [check(el) for el in (a, b, c)]
do (p if any(conditions) else q)
tmp = [doers[i] for i, condition in enumerate(conditions) if condition]
(與tmp
線將是一個真正的for
循環更Python,但我明白,你正在優化性能,列表理解更快......)
真實的行爲和條件是什麼?也許還有另外一種方式,就是針對這個問題...... – 2011-12-27 07:07:21