【发布时间】:2018-09-17 14:23:10
【问题描述】:
假设我在 Python3.x 中有以下字符串
string1 = 'AAAAABBBBCCCDD'
string2 = 'CCBADDDDDBACDC'
string3 = 'DABCBEDCCAEDBB'
我想创建一个摘要“频率字符串”,以下列格式计算字符串中的字符数:
string1_freq = '5A4B3C2D' ## 5 A's, followed by 4 B's, 3 C's, and 2D's
string2_freq = '2C1B1A5D1B1A1C1D1C'
string3_freq = '1D1A1B1C1B1E1D2C1A1E1D2B'
我的问题:
我将如何快速创建这样一个摘要字符串?
我的想法是:创建一个空列表来跟踪计数。然后创建一个检查下一个字符的 for 循环。如果匹配,将计数增加 +1 并移动到下一个字符。否则,追加到字符串 'count' + 'character identity' 的末尾。
这在 Python 中是非常低效的。有没有更快的方法(也许使用下面的功能)?
在python中有几种计算字符串元素的方法。我喜欢collections.Counter,例如
from collections import Counter
counter_str1 = Counter(string1)
print(counter_str1['A']) # 5
print(counter_str1['B']) # 4
print(counter_str1['C']) # 3
print(counter_str1['D']) # 2
还有str.count(sub[, start[, end]
返回子字符串 sub 中非重叠出现的次数 范围 [开始,结束]。可选参数 start 和 end 是 解释为切片符号。
举个例子:
print(string1.count('A')) ## 5
【问题讨论】:
标签: python string python-3.x frequency