2

假设我有一个列表:

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

4

3 回答 3

6

检查是否每个项目都在items

>>> items = ['matt', 'zen', 'a', 'b', 'c', 'cat', 'dog']
>>> {'a', 'b', 'c'}.issubset(items)
True

for循环内,仍然利用 s 的快速(O(1)摊销)查找速度set

find = {'a', 'b', 'c'}
for elem in items:
    if elem in find:
        # do stuff
于 2013-05-24T13:10:45.653 回答
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

即使我们在容器中有一个不可散列的类型,它仍然有效。

于 2013-05-24T13:14:38.600 回答
1

或者

for elem in 'abc':
    if elem in str
于 2013-05-24T13:12:24.470 回答