列表理解的一般形式是:
[<map expression> for <name> in <sequence expression> if <filter expression>]
示例代码:
subsets = [[]]
n = 1
[s + [n] for s in subsets]
预期输出:
[[[], 1]]
实际输出:
[[1]]
为什么s
空列表在列表理解中的输出之前被过滤?如果我在序列表达式之后有一个if statement
,那么它将作为输出的过滤器。如果将其添加到一个空列表中,则会返回下面的代码,这很有意义。显然,我缺少列表理解的基本知识。
subsets + [1]
>>> [[], 1]
subsets=[[[]]]
[s + [n] for s in subsets]