请看下面的代码:

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

我认为forif语句需要一个冒号。上面,在forif之后没有结肠。这种“如果”和“为了”的用法看起来不像我在课本上读到的。我通常读到的是这样的:
for note in self.notes:
    some code


if note.match(filter):
    some code

请您解释一下这种iffor用法,它不包括冒号,而且是单行语句。Anfif子句在语句的末尾。真让人困惑。

最佳答案

这不仅仅是一个循环/if,而是一个list comprehension
尤其是这段代码:

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

对于self.notes中的每个注释,只返回与筛选条件匹配的注释。
这基本上是一个过滤器,但通常您也可以使用列表理解来“转换”列表元素,例如:
[1000 * x for x in myNumbers if x < 2]

关于python - for和if在Python中的用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6001209/

10-13 07:15