首页 > 解决方案 > 在 python 列表中对连续的相似项目进行分组

问题描述

我有一个包含不同数据类型的列表,比如数字和字符串:

foo = [5,2,'a',8,4,'b','y',9, 'd','e','g']

假设我想在列表中找到所有连续的字符串,并将它们组合在一起:

bar = [ ['a'],['b','y'],['d','e','g'] ]

我怎样才能做到这一点

标签: pythonlist

解决方案


这是一个很好的使用机会groupby

from itertools import groupby


foo = [5,2,'a',8,4,'b','y',9, 'd','e','g']
bar = [list(g) for k, g in groupby(foo, key=lambda x: isinstance(x, str)) if k]

产生所需的:

[['a'], ['b', 'y'], ['d', 'e', 'g']]

推荐阅读