You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python移除列表中的空列表并提取元素

解决列表推导式保留子列表外层括号的问题

嗨,我来帮你搞定这个小问题!

你现在遇到的情况是,用[x for x in data if x]过滤空列表后,结果还是嵌套的子列表,而不是直接的数值。这是因为这个推导式只是把非空的子列表原样保留了,没有提取里面的元素~

最简单的针对性解决方案

因为你的每个非空子列表都只有一个元素,所以只需要在列表推导式里取出子列表的第一个元素就行:

data = [[1], [], [2], [], [], [4]]
output = [x[0] for x in data if x]
print(output)  # 输出: [1, 2, 4]

这里的x[0]就是把每个非空子列表里的唯一元素取出来,再结合if x过滤掉空列表,正好得到你想要的结果。

适用于多元素子列表的通用方案

要是以后你的子列表里可能包含多个元素,还可以用itertools.chain来展开所有非空子列表:

from itertools import chain

data = [[1], [], [2, 3], [], [], [4]]
filtered_non_empty = [x for x in data if x]
output = list(chain.from_iterable(filtered_non_empty))
print(output)  # 输出: [1, 2, 3, 4]

这个方法更灵活,不管子列表里有几个元素,都能把它们展开成一维列表。

内容的提问来源于stack exchange,提问作者Sara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:25:44