如何将包含空字符串的单个列表分割为多个子列表?
列表按空字符串分割的实现方案
你的原代码逻辑只是跳过空字符串并将非空元素转为整数存入单一列表,完全没有处理分割为子列表的核心需求,所以输出不符合预期。以下是两种符合需求的实现方式:
基础循环实现
通过维护临时子列表,遍历原列表时将非空元素加入临时列表,遇到空字符串时(且临时列表非空)就将其存入结果列表,最后处理末尾剩余的临时子列表:
lst = ["1","2","","3","4","5","","6"] result = [] current_sub = [] for item in lst: if item != "": current_sub.append(item) else: if current_sub: result.append(current_sub) current_sub = [] # 处理最后一组未被分割的元素 if current_sub: result.append(current_sub) print(result) # 输出:[["1","2"],["3","4","5"],["6"]]
简洁分组实现
借助itertools.groupby按元素是否非空分组,直接提取有效分组转为子列表:
from itertools import groupby lst = ["1","2","","3","4","5","","6"] # 按"元素非空"为条件分组,仅保留条件为True的组并转为列表 result = [list(group) for key, group in groupby(lst, lambda x: x != "") if key] print(result) # 输出:[["1","2"],["3","4","5"],["6"]]
内容的提问来源于stack exchange,提问作者Joel Madeira
相关产品推荐
相关产品推荐

