假设我有一个清单:
items = ['matt', 'zen', 'a', 'b', 'c', 'cat', 'dog']
if elem in items
`if 'a' 'b' 'c' found then return 1
每当elem在列表中找到'a','b','c'并返回一个值。有没有办法以这种方式定义list
?我不希望有多个if条件(如果可以避免的话)。
答案 0 :(得分:6)
检查每件商品是否在items
>>> items = ['matt', 'zen', 'a', 'b', 'c', 'cat', 'dog']
>>> {'a', 'b', 'c'}.issubset(items)
True
在for
循环中,仍然利用O(1)
s的快速(set
摊销)查找速度:
find = {'a', 'b', 'c'}
for elem in items:
if elem in find:
# do stuff
答案 1 :(得分:2)
您可以将子集运算符用于简单对象,例如字符串:
>>> items = ['matt', 'zen', 'a', 'b', 'c', 'cat', 'dog']
>>>> {'a', 'b', 'c'} < set(items)
True
以下是一般情况:
>>> items = ['matt', 'zen', 'a', 'b', 'c', 'cat', 'dog']
>>> all(x in items for x in (['a'], 'b', 'c'))
True
即使我们在容器中有一个不可用的类型,它仍然有效。
答案 2 :(得分:1)
或者
for elem in 'abc':
if elem in str