python - 列表压缩不返回空列表值
问题描述
列表推导的一般形式是:
[<map expression> for <name> in <sequence expression> if <filter expression>]
示例代码:
subsets = [[]]
n = 1
[s + [n] for s in subsets]
预期输出:
[[[], 1]]
实际输出:
[[1]]
为什么s
空列表在列表推导中的输出之前被过滤?如果我有一个if statement
after 序列表达式,它将成为输出的过滤器。如果你添加到一个空列表,你会得到下面的代码,这是有意义的。显然,我缺少列表理解的基本内容。
subsets + [1]
>>> [[], 1]
解决方案
subsets = [[]]
n = 1
[s + [[],n] for s in subsets]
在您的代码中,当您在 for 循环中进行列表压缩时,您将获得一个列表。并且您正在列表上执行连接操作。这就是为什么你会得到一个像 [[1]] 这样的列表
推荐阅读
- python - 在 Pattern python 库中调用 nragms 方法时出现 UnboundLocalError
- mongodb - 克隆解析服务器共享数据
- reactjs - React Navigation 中的选项卡导航器图标
- android - 谷歌播放服务插件版本冲突
- android - 在 switch 语句中将字符串从硬编码更改为 Android Studio 中的字符串资源
- java - 什么是在不剪辑的情况下将音频样本添加到其中的正确方法
- r - 破解在 Have::read_sav() 的文件路径中包含特殊字符
- javascript - 如何在 Firebase Firestore 中创建与用户相关的数据
- android - adb logcat 二进制模式忽略过滤器规范?
- php - PHP:在深度数组中查找元素,然后修改每个父元素