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

如何以空字符串为分隔符高效拆分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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:45:30