计算连续元素对的 Python 程序
假设我们有一个数字字符串s包含几个数字。数字可能出现多次。我们必须返回一些对(digit,count)表示哪个数字在s中连续出现了多少次。为了解决这个问题,我们可以使用groupby()itertools库下的函数。这将返回一个迭代器对象,其中每个项目将位于第一位,另一个groupby对象位于第二位。我们必须为每对计算groupby对象的数量。
因此,如果输入类似于s="11522226551",那么输出将是[(1,2),(5,1),(2,4),(6,1),(5,2),(1,1)]因为一开始1出现了两次,然后是单个5,然后是四个2,依此类推。
示例
让我们看下面的实现来更好地理解
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)]