3
我有一個組合列表(例如5位數字的PIN碼),並且只想要其中有1,2和3的組合。看了看周圍,但似乎沒有找到任何出於某種原因。如何檢查多個字符是否在列表中?
if 1 in combination and 2 in combination and 3 in combination:
這似乎工作,但我相信有一種更有效的方式,因爲我的相當醜陋。
我有一個組合列表(例如5位數字的PIN碼),並且只想要其中有1,2和3的組合。看了看周圍,但似乎沒有找到任何出於某種原因。如何檢查多個字符是否在列表中?
if 1 in combination and 2 in combination and 3 in combination:
這似乎工作,但我相信有一種更有效的方式,因爲我的相當醜陋。
如果combination
是一組可以執行一個子集檢查:
if {1, 2, 3} <= combination:
否則,你可以這樣做:
if all(x in combination for x in (1, 2, 3)):
你可以把你mobination
爲字符串,並在set
檢查intersaction
。
>>> combination = '456'
>>> needed = '123'
>>> set(needed) & set(combination)
set([])
>>> combination = '156'
>>> set(needed) & set(combination)
set(['1'])
如果從intersection
獲得超值回報那麼你需要的值是combination
。
在'all'調用中是否有理由使用'(1,2,3)'而不是'[1,2,3]'? – Gabriel
不是。在這種情況下,「(1,2,3)」和「[1,2,3]」在功能上是等同的。有些人更喜歡'()'表示數字是隻讀的;其他人更喜歡'[]'的外觀。 –