如何以空字符串为分隔符高效拆分Python数组?
按空字符串分隔数组为子数组的高效方法
给定数组:
foo = ['1', '2', '', '1', '2', '3', '', '1', '', '2']
需要以空字符串''为分隔符,将其拆分为如下子数组:
[['1', '2'], ['1', '2', '3'], ['1'], ['2']]
方法一:手动迭代(高效且灵活)
这是最直接高效的方式,仅需一次遍历数组,时间复杂度O(n),还能处理连续空字符串、首尾空字符串等边界情况:
foo = ['1', '2', '', '1', '2', '3', '', '1', '', '2'] result = [] current_group = [] for item in foo: if item == '': # 遇到空字符串时,若当前组非空则加入结果,重置当前组 if current_group: result.append(current_group) current_group = [] else: current_group.append(item) # 处理数组末尾未被加入的非空组 if current_group: result.append(current_group) print(result)
方法二:使用itertools.groupby(代码简洁)
借助标准库的groupby工具,按元素是否为空分组,代码更简洁,效率同样为O(n):
from itertools import groupby foo = ['1', '2', '', '1', '2', '3', '', '1', '', '2'] # 按x != ''分组,筛选出非空的组并转为列表 result = [list(group) for key, group in groupby(foo, lambda x: x != '') if key] print(result)
说明
两种方法都能高效完成需求:
- 手动迭代无需依赖外部模块,逻辑清晰,对边界情况的处理更可控;
groupby写法更简洁,适合追求代码紧凑的场景。
内容的提问来源于stack exchange,提问作者renton01
相关产品推荐
相关产品推荐

