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 := 一个新的列表
- 对于其中的每一对(digit, gp),执行以下操作
- 将(digit和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)]