假设我有一个列表:
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 条件(如果可以避免的话)。
检查是否每个项目都在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
您可以将子集运算符用于简单的对象,例如字符串:
>>> 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
即使我们在容器中有一个不可散列的类型,它仍然有效。
或者
for elem in 'abc':
if elem in str