首页 > 解决方案 > 列表压缩不返回空列表值

问题描述

列表推导的一般形式是:

[<map expression> for <name> in <sequence expression> if <filter expression>]

示例代码:

subsets = [[]]
n = 1
[s + [n] for s in subsets]

预期输出:

[[[], 1]]

实际输出:

[[1]]

为什么s空列表在列表推导中的输出之前被过滤?如果我有一个if statementafter 序列表达式,它将成为输出的过滤器。如果你添加到一个空列表,你会得到下面的代码,这是有意义的。显然,我缺少列表理解的基本内容。

subsets + [1]
>>> [[], 1]

标签: pythonlist-comprehension

解决方案


subsets = [[]]
n = 1
[s + [[],n] for s in subsets]

在您的代码中,当您在 for 循环中进行列表压缩时,您将获得一个列表。并且您正在列表上执行连接操作。这就是为什么你会得到一个像 [[1]] 这样的列表


推荐阅读