使用if和break创建Python列表理解

时间:2012-01-26 04:47:23

标签: python if-statement for-loop list-comprehension

是否可以将此代码转换为列表理解?

for i in userInput:
    if i in wordsTask:
        a = i
        break

我知道如何转换部分内容:

[i for i in userInput if i in wordsTask]

但我不知道如何添加休息时间,文档也没多大帮助。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:39)

a = next(i for i in userInput if i in wordsTask)

稍微分解一下:

[i for i in userInput if i in wordsTask]

会产生一个清单。你想要的是列表中的第一项。一种方法是使用下一个功能:

next([i for i in userInput if i in wordsTask])

Next从迭代器返回下一个项目。在像列表一样可迭代的情况下,它最终得到第一个项目。

但是没有理由实际构建列表,所以我们可以使用生成器表达式:

a = next(i for i in userInput if i in wordsTask)

另请注意,如果生成器表达式为空,则会导致异常:StopIteration。您可能想要处理这种情况。或者您可以添加默认

a = next((i for i in userInput if i in wordsTask), 42)