我正在编写一个编码器,我想保留一个列表来跟踪字符串中字符的迭代。
例如:
Input = aaabccccaa
Output = [3, 1, 4, 2]
这是我的:
def numberCheck(string, numberList):
teller = 1
for i in range(len(string)):
for j in range(i + 1,len(string)):
if string[i] == string[j]:
teller += 1
else:
break
numberList.append(teller)
teller = 1
return numberList
但这给了我输出 [3, 2, 1, 1, 4, 3, 2, 1, 2, 1]
我知道为什么会这样输出,但我不知道如何修复代码才能得到我想要的输出。
提前致谢
请您参考如下方法:
您可以使用内置的 itertools对于此任务(特别是 groupby ),而不是您拥有的长函数。
>>> from itertools import groupby
>>> Input = "aaabccccaa"
>>> [len(list(group)) for key, group in groupby(Input)]
[3, 1, 4, 2]
如果你想保留字母、它的计数和它在字符串中出现的顺序:
>>> [{k: len(list(group))} for key, group in groupby(Input)]
[{'a': 3}, {'b': 1}, {'c': 4}, {'a': 2}]
