python-3.x - 将 '000111010010111' 拆分为 ['000','111','0',1','00','1','0','111']
问题描述
是否有一些简洁的方法可以将一串 0 和 1 拆分为全 0 和全 1 的同质连续段?标题中的示例。
我当然可以使用嵌套循环、条件和.count()
方法来做到这一点,但这似乎需要一个库函数。我只是不确定如何搜索它,如果有的话。
解决方案
是的,您可以使用itertools.groupby
from itertools import groupby
a = "000111010010111"
result = ["".join(list(group)) for key, group in groupby(a)]
发生了什么?我们曾经itertools.groupby
对连续的术语进行分组。每次关键元素更改时都会创建一个新组(在您的示例中,当 0 变为 1 或 1 变为 0 时)。然后连接内部列表以达到您想要的输出。
输出:
['000', '111', '0', '1', '00', '1', '0', '111']
这适用于任何字符串(不仅仅是 1 和 0),并将根据项目的连续出现将它们组合在一起。
推荐阅读
- php - Laravel:如何跟踪在哪个循环选择数组中上传的文件
- typescript - 如何让 cypress.io 向左滑动离子 ion-item-sliding?
- javascript - 如何在 React 中按另一个过滤数组?
- swift - 添加新项目时为 CAShapelayer 内容设置动画
- java - Java运行命令无法连接Oracle数据库?
- hadoop - 使用 bicond 获取 ID?
- postgresql - 如何使用 Ansible 替换文件中的多个相同行
- python-3.x - 如何给数字一个特定的颜色并使用 PIL 显示它?
- c - 在 C 中使用 OR 的 switch 语句
- javascript - 如何停止来自子元素的链接的默认行为