从列表中提取关键字然后使用`和`

时间:2015-10-15 12:11:58

标签: python

嗯,我不知道如何解释这个。例如,我有以下代码:

if 'foo' and 'bar' in 'foobar':
    print('foobar')

我想使用一些关键字检查刺痛,我的问题是,现在我正试图将这些关键字放在这样的列表中:

keywords = ['foo', 'bar']

但我现在该如何使用它们?如果我使用for像这样提取它们:

for i in keywords:
    if i in 'foobar':
        print('foobar')

但这会打印foobar两次。

2 个答案:

答案 0 :(得分:9)

您可以使用生成器表达式遍历所有关键字,并检查它们是否全部包含在'foobar'中。使用all也可以在找到第一个False后短路。

if all(i in 'foobar' for i in keywords):
    print('foobar')

如果您想要print,如果找到任何关键字,可以使用

if any(i in 'foobar' for i in keywords):
    print('foobar')

答案 1 :(得分:3)

如果您想坚持使用循环,可以使用for-else

for i in keywords:
    if i not in 'foobar':
        break
else:
    print('foobar')

如果i中没有任何'foobar',则循环将退出并跳过else部分。 else如果仅在没有for-else的情况下退出循环,则仅输入break,在这种情况下,只有i位于'foobar'时才会出现flex-grow