Python代码未统计最后一段连续字符序列的原因及优化方案
问题修复:遗漏最后一段序列计数
你的代码问题在于循环结束后,最后一段连续字符的计数没有被添加到结果列表中。循环仅在遇到不同字符时才会将之前的计数存入列表,而最后一段字符没有后续字符触发这个操作。
修正后的代码
a = "assdddfghttyuuujssa" b = '' c = 1 d = [] for item in a: if item == b: c += 1 elif b == '': c = 1 else: d.append(c) c = 1 b = item d.append(c) # 添加这行,把最后一段的计数加入结果 print(''.join(map(str, d))) # 将数字列表转为目标字符串格式
标准库替代方案(使用itertools.groupby)
Python的itertools.groupby可以直接对连续相同字符分组,是处理这类问题的最优解:
from itertools import groupby s = "aabcccjaaa" # 对每个连续字符组,计算长度并转为字符串后拼接 result = ''.join(str(len(list(group))) for _, group in groupby(s)) print(result) # 输出:21313
groupby会把字符串中连续相同的字符聚合成一个迭代器,我们通过len(list(group))获取每组的长度,再将所有长度转为字符串拼接即可得到目标结果。
内容的提问来源于stack exchange,提问作者Djery SC
相关产品推荐
相关产品推荐

