Использование for и if в Python


Не могли бы вы взглянуть на код ниже:

def search(self, filter):
        return [note for note in self.notes if note.match(filter)]

Я думал, что for и if утверждения требуют двоеточия. Выше нет двоеточия после for и if. И этот вид если и для использования не похож на то, что я читаю в учебниках. Обычно я читаю примерно следующее:

for note in self.notes:
    some code

Или

if note.match(filter):
    some code

Не могли бы вы объяснить этот вид if и for использования, он не включает двоеточия и является однострочным оператором. Предложение Anf if находится в конце заявление. Действительно сбивает с толку.

3 2

3 ответа:

Это не просто цикл / if, а понимание списка

В частности этот фрагмент кода:

return [note for note in self.notes if note.match(filter)]

Для каждой ноты в self.notes возвращает только те ноты, которые соответствуют условию фильтра.

Это в основном фильтр, но в целом вы можете использовать понимание списка также для "преобразования" элементов списка, например:

[1000 * x for x in myNumbers if x < 2]

Вы смущены, потому что смотрите на список понимания.

Подробнее здесь

Это не регулярное для, не в смысле языка Си. Это питон Список понимания.