在Python中使用for和if

时间:2011-05-14 10:26:30

标签: python for-loop if-statement colon

请您查看下面的代码:

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

我认为forif语句需要冒号。上图,forif后没有冒号。这种if和for用法看起来不像我在教科书中看到的那样。我通常读到的是这些:

for note in self.notes:
    some code

if note.match(filter):
    some code

请您解释这种iffor用法,它不包括冒号,它是单行声明。 Anf if子句在语句的末尾。真的很混乱。

3 个答案:

答案 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