Создание понимания списка Python с помощью if и break - PullRequest
14 голосов
/ 26 января 2012

Можно ли превратить этот код в понимание списка?

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

Я знаю, как преобразовать его часть:

[i for i in userInput if i in wordsTask]

Но я не знаю, какдобавьте перерыв, и документация не сильно помогла.

Любая помощь будет оценена.

1 Ответ

39 голосов
/ 26 января 2012
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])

Далее возвращает следующий элемент из итератора.В случае повторяемого объекта, подобного списку, он заканчивается первым элементом.

Но оснований для создания списка нет, поэтому вместо этого мы можем использовать выражение генератора:1012 * Также обратите внимание, что если выражение генератора пусто, это приведет к исключению: StopIteration.Вы можете решить эту ситуацию.Или вы можете добавить по умолчанию

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