2

请看下面的代码:

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

我认为forif语句需要一个冒号。for上面, and之后没有冒号if。而且这种 if 和 for 用法看起来不像我在教科书中读到的。我一般读的是这样的:

for note in self.notes:
    some code

或者

if note.match(filter):
    some code

请您解释一下这种用法iffor它不包括冒号,它是单行语句。Anfif子句位于语句的末尾。真的很混乱。

4

3 回答 3

9

这不仅仅是一个循环/if,而是一个列表理解

特别是这段代码:

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

for each note inself.notes仅返回与过滤条件匹配的那些注释。

这基本上是一个过滤器,但通常您也可以使用列表推导来“转换”列表元素,例如:

[1000 * x for x in myNumbers if x < 2]
于 2011-05-14T10:29:27.907 回答
3

您很困惑,因为您正在查看列表理解。

在这里阅读更多

于 2011-05-14T10:29:47.833 回答
1

这不是常规的 for,不是 C 语言意义上的。这是一个 Python列表理解

于 2011-05-14T10:29:59.233 回答