在python中搜索列表中的多个值

时间:2013-05-24 13:09:30

标签: python string list

假设我有一个清单:

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条件(如果可以避免的话)。

3 个答案:

答案 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