如何检查多个字符是否在列表中?
问题描述:
我有一个组合列表(例如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]”在功能上是等同的。有些人更喜欢'()'表示数字是只读的;其他人更喜欢'[]'的外观。 –