Python程序用于计算连续元素的对数
假设我们有一个包含一些数字的数字字符串 s。这些数字可能出现多次。我们必须返回一些对 (数字,计数),表示哪个数字在 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 := 一个新的列表
- 对于 it 中的每个对 (数字,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)]
广告