Python:一行循环条件

Nei*_*ham 3 python syntax loops python-3.x

在下面的示例中,我正在测试是否在字符串 'hello' 中找到了变量 'characters' 中的任何字符。

characters = ['a','b','c','d']

if True in [c in 'hello' for c in characters]: print('true')
else: print('false')
Run Code Online (Sandbox Code Playgroud)

一行 for 循环创建了一个布尔值列表。我想知道是否有任何方法可以不创建列表,而是在循环中的条件之一通过后传递整个条件。

Pat*_*ugh 5

您可以any与生成器表达式一起使用。这将一次从生成器中获取一个值,直到生成器耗尽或其中一个值为真。

生成器表达式只会根据需要计算值,而不是像列表推导那样一次性计算所有值。

if any(c in 'hello' for c in characters):
    ...
Run Code Online (Sandbox Code Playgroud)