2014-05-06 84 views
3

我有一個變量,並且想檢查它是否至少與其他兩個變量中的一個匹配。如何檢查變量是否與其他兩個變量中的至少一個相同?

顯然,我可以這樣做:

if a == b or a == c: 

但我想知道是否有任何較短的方式,是這樣的:

if a == (b or c): 

如何測試一個變量是一樣的 - 在至少 - 其他人之一?

+0

你應該改一下這個問題。目前這意味着你需要'如果a == b和== c' –

+0

@TimCastelijns:我編輯它,希望這就是你的意思。這個問題也不是我說的。其他人編輯我的初始帖子到誤導性的問題 – Droids

+0

我看到,其他編輯通過審查,這是一個恥辱。感謝您的編輯 –

回答

13

對於使用in

if a in (b, c): 

測試在一個tuple會員有O(n)時間複雜度的平均情況。如果你有一個大的收藏價值和價值觀的同一集合正在執行許多成員的測試中,它可能是值得創建速度set

x = set((b,c,d,e,f,g,h,i,j,k,l,...)) 
if a in x: 
    ... 
if y in x: 
    ...  

一旦已建成,在set測試入會平均時間複雜度爲O(1),所以從長遠來看,它可能會更快。

或者,你也可以這樣做:

if any(a == i for i in (b,c)): 
+0

您對時間複雜性的觀點是無效的,因爲它忽略了從元組構造'set'的成本,這個成本看起來隨着元組長度線性增長。如果你關心時間,你應該使用'a in(b,c)'。 –

+0

@TomFenech,哦對!謝謝。完全錯過了。我正在更新我的答案。 – sshashank124

+0

我已經重新解釋了一下這個解釋。如果您不喜歡,請隨時將其滾回。 –

相關問題