python - 计算单个字符串中 char 的出现次数
问题描述
string = input(" ")
count = string.count()
print(string + str(count))
需要使用for循环来获取输出:ll2a1m1a1
解决方案
使用groupby
自itertools
>>> from itertools import groupby
>>> s = 'llama'
>>> [[k, len(list(g))] for k, g in groupby(s)]
[['l', 2], ['a', 1], ['m', 1], ['a', 1]]
如果您想要确切的输出,请尝试以下操作,并按照@DanielMesejo 的建议,使用sum(1 for _ in g)
代替len(list(g))
:
>>> from itertools import groupby
>>> s = 'llama'
>> groups = [[k, sum(1 for _ in g)] for k, g in groupby(s)]
>>> ''.join(f'{a * b}{b}' for a, b in groups)
'll2a1m1a1'
这适用于您想要的任何单词,假设这个词是“发生”,所以
>>> from itertools import groupby
>>> s = 'happen'
>> groups = [[k, sum(1 for _ in g)] for k, g in groupby(s)]
>>> ''.join(f'{a * b}{b}' for a, b in groups)
'h1a1pp2e1n1'
推荐阅读
- java - 在 SpringBoot 中使用 MockMvc 进行测试
- javascript - innerHTML 在窗口加载时没有改变
- r - R Shiny Dynamic 选择输入 - 捕获事件
- python-3.x - 将 DF 的某些特征应用到另一个 DF
- c++ - 获取 glVertex3f 的值并搜索最接近的值
- scala - 如何单独读取文件的每一行,以便在每一行上执行任务?- 斯卡拉
- google-sheets - 在表格中重新格式化电话号码时出现 ArrayFormula 扩展错误
- javascript - 如何编写一个名为 `add` 的函数。这样一旦它收到 2 个参数,它就会返回 2 个值的总和
- python - 如何通过 slug 而不是 id 过滤对象
- java - WebFlux 链接调用多个服务和响应聚合