Использование 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 ответа:
Это не просто цикл / if, а понимание списка
В частности этот фрагмент кода:
return [note for note in self.notes if note.match(filter)]
Для каждой ноты в
self.notes
возвращает только те ноты, которые соответствуют условию фильтра.Это в основном фильтр, но в целом вы можете использовать понимание списка также для "преобразования" элементов списка, например:
[1000 * x for x in myNumbers if x < 2]
Вы смущены, потому что смотрите на список понимания.
Подробнее здесь
Это не регулярное для, не в смысле языка Си. Это питон Список понимания.