用于计算连续元素对的 Python 程序
pythonserver side programmingprogramming更新于 2025/12/21 18:52:17
假设我们有一个包含几个数字的数字字符串 s。这些数字可能会出现多次。我们必须返回一些对 (digit, count),表示哪个数字在 s 中连续出现了多少次。为了解决这个问题,我们可以使用 itertools 库下的 groupby() 函数。这将返回一个迭代器对象,其中每个项目将位于第一位,另一个 groupby 对象位于第二位。我们必须计算每对 groupby 对象的数量。
因此,如果输入为 s = "11522226551",则输出将为 [(1, 2), (5, 1), (2, 4), (6, 1), (5, 2), (1, 1)],因为开头 1 出现两次,然后是单个 5,然后是四个 2,依此类推。
要解决这个问题,我们将遵循以下步骤 −
- it := 为 s 调用 groupby 函数
- ret := 一个新列表
- 对于其中的每一对 (数字,gp),执行
- 将 (gp 列表的数字和长度) 插入到 ret 中
- 返回 ret
示例
让我们看看下面的实现以便更好地理解
from itertools import groupby def solve(s): it = groupby(s) ret = [] for digit, gp in it: ret.append((int(digit), len(list(gp)))) return ret s = "11522226551" print(solve(s))
输入
"11522226551"
输出
[(1, 2), (5, 1), (2, 4), (6, 1), (5, 2), (1, 1)]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

