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

如何删除嵌套列表中的空字符串?filter方法无效

问题分析

你用case = list(filter(None, case))没生效的原因很明确:这个代码是过滤外层列表里的空元素,但你的空字符串全存在每个子列表内部,外层列表的元素都是非空的列表对象,所以filter根本不会对它们做任何处理。

解决办法

两种处理方式任选其一即可:

方式一:生成列表时直接过滤

修改原循环代码,在分割字符串后立刻去掉空字符串:

tc = int(input())
case = list(range(tc))

for i in range(tc):
    # 用列表推导式过滤空字符串
    case[i] = [s for s in input().split("X") if s]

print(case)

方式二:对已生成的case列表事后处理

如果已经得到了包含空字符串的case列表,用嵌套列表推导式遍历每个子列表并过滤:

# 假设已存在原代码生成的case列表
case = [[s for s in sublist if s] for sublist in case]
# 也可以用filter写法
case = [list(filter(None, sublist)) for sublist in case]
处理后结果

运行修改后的代码,输入你提供的测试用例,会得到如下结果:

[
    ['OO', 'O', 'OOO'],
    ['OO', 'OO', 'OO'],
    ['O', 'O', 'O', 'O', 'O', 'O', 'O'],
    ['OOOOOOOOOO'],
    ['OOOO', 'OOOO', 'OOOO']
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:52:05