用于计算连续元素对的 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)]

相关文章


有用资源