如何删除嵌套列表中的空字符串?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
相关产品推荐
相关产品推荐

