2017-03-03 106 views
3

我有一個組合列表(例如5位數字的PIN碼),並且只想要其中有1,2和3的組合。看了看周圍,但似乎沒有找到任何出於某種原因。如何檢查多個字符是否在列表中?

if 1 in combination and 2 in combination and 3 in combination: 

這似乎工作,但我相信有一種更有效的方式,因爲我的相當醜陋。

回答

5

如果combination是一組可以執行一個子集檢查:

if {1, 2, 3} <= combination: 

否則,你可以這樣做:

if all(x in combination for x in (1, 2, 3)): 
+0

在'all'調用中是否有理由使用'(1,2,3)'而不是'[1,2,3]'? – Gabriel

+0

不是。在這種情況下,「(1,2,3)」和「[1,2,3]」在功能上是等同的。有些人更喜歡'()'表示數字是隻讀的;其他人更喜歡'[]'的外觀。 –

0

你可以把你mobination爲字符串,並在set檢查intersaction

>>> combination = '456' 
>>> needed = '123' 
>>> set(needed) & set(combination) 
set([]) 
>>> combination = '156' 
>>> set(needed) & set(combination) 
set(['1']) 

如果從intersection獲得超值回報那麼你需要的值是combination

相關問題