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