Skip to main content
 首页 » 编程设计

python之跟踪字符串中字符迭代的列表

2025年05月04日22exmyth

我正在编写一个编码器,我想保留一个列表来跟踪字符串中字符的迭代。

例如:

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}]