Skip to main content
 首页 » 编程设计

python之我需要将列表拆分为列表列表 [Python]

2025年05月04日8mq0036

我有一个这种格式的项目列表:

['2', '', '9', '24', '1', '7', '12', '4', '', '18', '13', '34', '3', '10'] 

我需要把它变成一个由空项分隔的列表列表:

[['2'], ['9', '24', '1', '7', '12', '4'], ['18', '13', '34', '3', '10']] 

我只是不确定该怎么做。我确实尝试过嵌套循环,但没有按计划工作。

我发现有一种方法可以使用 itertools.groupby 来完成,但我无法弄清楚它的语法。

感谢所有的帮助!谢谢!

请您参考如下方法:

>>> from itertools import groupby 
>>> a = ['2', '', '9', '24', '1', '7', '12', '4', '', '18', '13', '34', '3', '10'] 
>>> [list(items) for status, items in groupby(a, lambda v: v != '') if status] 
[['2'], ['9', '24', '1', '7', '12', '4'], ['18', '13', '34', '3', '10']] 

groupby 接受一个可迭代对象和一个函数,并返回根据函数的返回值分组到集合中的项目。此示例检查返回值是否为 True,然后显式输出列表列表(这正是您在示例中想要的)。

编辑:这是@JonClements 在评论中建议的稍微更具可读性的版本(使用字符串转换为 bool 而不是 lambda功能):

[list(g) for k, g in groupby(a, bool) if k] 

如果你不明确需要一个列表,你也可以这样做:

>>> for k, v in groupby(a, bool): 
...     if k: 
...         # do something with each group of values (v) 
...