python - 使用python计算每个相邻字符的出现
问题描述
使用 Python 来解决这个问题: 定义一个接受字符串的函数,计算每个相邻字符出现的次数。此函数应返回一个包含每个字符及其计数的字符串。例如:
'jjjjeerrr' 将返回到 'j4e2r3'
解决方案
zip()
当您需要将字符串或列表的元素与其后继或前任进行比较时,该函数是您的朋友。有了它,您可以获得每个重复序列中第一个字母的索引。然后可以组合这些“中断”位置(再次使用 zip)以形成开始/结束范围,从而为您提供重复的大小:
def rle(S):
breaks = [i for i,(a,b) in enumerate(zip(S,S[1:]),1) if a!=b]
return "".join(f"{S[s]}{e-s}" for s,e in zip([0]+breaks,breaks+[len(S)]))
输出:
print(rle("jjjjeerrr")) # j4e2r3
print(rle("jjjjeerrrsssjj")) # j4e2r3s3j2
推荐阅读
- powershell - PowerShell - 以正确的顺序处理命令行参数
- swift - Swift 5 - MacOS App - 与其他应用程序交互
- javascript - 我在其他部分有错误!你已经这样输入了 2 次
- angular - 如何在组件样式中应用内置主题变量的角度材料?
- java - 在 Thymeleaf 中迭代二维数组时如何访问字段?
- apache-flink - FlinkRunner 上的 Apache Beam Python 因 java.io.FileNotFoundException 而失败
- javascript - 如何复制在javascript中声明的链接?
- javascript - JavaScript 获取字符串中的最后一个数字并将其替换为下一个数字
- reactjs - ReactJS on Windows server: Router not working - Tries to find subdirectory instead of route
- react-native - 使用功能样式组件时如何在屏幕之间传递数据