我有一个很长的字符串列表(以下只是117k列表的一个示例):
names = ['abc', 'aabc', 'aaabc', 'abbc', 'abxcc']
是否有一种有效的方法来计算有多少个双字符(例如 aa
)或三个字符(例如 aaa
)出现在里面吗?我能想到的唯一方法是进行如下循环:
for letter in alphabet:
for word in strings_list:
for letter in word
etc.
但由于我的名单很大,我想知道是否有更有效的方法。
我还应该提到,我的名单是中文的,因此我有大约6600个独特的字符
预期产出:
number_of_doubles = value_1
number_of_triples = value_2
更新:
为了澄清,字符串 aaa
应该算三倍而不是两倍
2条答案
按热度按时间sf6xfgos1#
您可以编写一个进行累积计数的自定义函数,并使用它来获得连续的双精度、三精度等:
mrwjdhj32#
正则表达式
([a-z])\1\1
将匹配任意字母a-z和的三次重复([a-z])\1
将匹配两次重复。你的问题不清楚是否
aaa
算作两场比赛。如果没有,你可能需要做一些补充检查。在正则表达式中这样做可能会有不必要的困难,因此您可能希望以其他方式消除重复计数。