python - 在 python 列表中对连续的相似项目进行分组
问题描述
我有一个包含不同数据类型的列表,比如数字和字符串:
foo = [5,2,'a',8,4,'b','y',9, 'd','e','g']
假设我想在列表中找到所有连续的字符串,并将它们组合在一起:
bar = [ ['a'],['b','y'],['d','e','g'] ]
我怎样才能做到这一点
解决方案
这是一个很好的使用机会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']]
推荐阅读
- azure - Azure AD B2C 中用于登录/注册的自定义 UI 给出错误
- reporting-services - SSRS 报告自动生成
- c++ - 为什么我的银行管理系统无法正常工作?
- audiokit - Audiokit 4.9 中的 AKSequencer.init()
- excel - 模拟简单的 VBA 宏以与 Google 表格兼容
- github - 列出特定存储库的所有分支
- python - xgb-wrapper 交叉验证 (xgb.cv) 的结果是什么?
- ios - Tableview 没有得到 Xib 文件的高度
- javascript - 在 TypeScript 中,构建 dist 文件夹时使模块别名工作的正确配置是什么?
- angular - ng build后的角度cli重复块名称