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)]

更新于: 2021年10月12日

432 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告