我有這個IF或語句更優雅的方式:Python的 - 有沒有寫一個包含多個這種IF語句或
a = 1
b = 2
c = 3
d = 4
if a == 5 or b == 5 or c == 5 or d == 5:
# do something
else:
# do something different
我想知道,這是寫的最好辦法?
我有這個IF或語句更優雅的方式:Python的 - 有沒有寫一個包含多個這種IF語句或
a = 1
b = 2
c = 3
d = 4
if a == 5 or b == 5 or c == 5 or d == 5:
# do something
else:
# do something different
我想知道,這是寫的最好辦法?
你可以只使用element in list
語法。此外,如果您只想打印true
或false
,則無需使用if else
聲明。你可以只直接打印布爾:
print(5 in [a, b, c, d])
# False
如果你想有一個小寫的字符串:
print(str(5 in [a, b, c, d]).lower())
# "false"
最後,如果你經常需要這個測試,你可以收拾值成set:
a = 1
b = 2
c = 3
d = 4
all_values = set([a, b, c, d])
你會花一些時間來創建組,但查詢5 in all_values
應該變得更快,尤其是如果有很多變數。
這將是我的眼睛最好。
if any(x==5 for x in (a, b, c, d)):
...
,如果你想要做多and
檢查,你可以使用all()
具有相同的語法你可以看看documentation
同樣。
最後,爲您的特殊情況下,既然你想要做的唯一事情是一個成員資格測試我會張貼@Eric答案去。我的方法更通用。
你可以使用if 5 in [a, b, c,d]:
在情況下,如果你想檢查的變量平等與不同數量any()
是一個安全的賭注
if any([a == 1, b == 2, c == 3, d == 4]):
也許只要使用in
:
if 5 in (a,b,c,d):
print('true')
else:
print('false')
或只是
print(5 in (a,b,c,d))
我正在使用'print'作爲if語句的一個例子,我已經編輯了這個問題來反映這一點。 – Lewis909
對於過早的優化,使用'set',而不是'list' –
@Chris_Rands:萬一它不是100%的嘲諷,我加了註釋關於套。 –
在'list'上使用'set'有什麼好處,它是否更快? – Lewis909