请您查看下面的代码:
def search(self, filter):
return [note for note in self.notes if note.match(filter)]
我认为for
和if
语句需要冒号。上图,for
和if
后没有冒号。这种if和for用法看起来不像我在教科书中看到的那样。我通常读到的是这些:
for note in self.notes:
some code
或
if note.match(filter):
some code
请您解释这种if
和for
用法,它不包括冒号,它是单行声明。 Anf if
子句在语句的末尾。真的很混乱。
答案 0 :(得分:9)
这不仅仅是一个循环/ 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]
答案 1 :(得分:3)
你很困惑,因为你正在查看列表理解。
了解更多here
答案 2 :(得分:1)
这不是常规,不是C语言意义上的。这是一个Python list comprehension。