Skip to main content
 首页 » 编程设计

python之计算字符串中的多个字母组

2025年05月04日20lidabo

我一直在尝试调整我的 python 函数来计算字母组而不是单个字母,但我遇到了一些麻烦。这是我必须计算单个字母的代码:

my_seq = "CTAAAGTCAACCTTCGGTTGACCTTGAAAGGGCCTTGGGAACCTTCGGTTGACCTTGAGGGTTCCCTAAGGGTT" 
 
def count_letters(str): 
    counts = {} 
    for c in str: 
        if c in counts: 
            counts[c]+=1 
        else: 
            counts[c]=1 
    return counts 
 
counts = count_letters(my_seq) 
print(counts) 

该函数目前计算出每个字母的计数。现在它打印这个:

{'C': 23, 'T': 30, 'G': 30, 'A': 20} 

理想情况下,我希望它打印出如下内容:

{'CTA': 2, 'TAG': 3, 'CGC': 1, 'GAG': 2 ... } 

我是 python 的新手,事实证明这很困难。

请您参考如下方法:

这可以使用 collections.Counter 很快完成.

from collections import Counter 
 
s = "CTAACAAC" 
 
def chunk_string(s, n): 
    return [s[i:i+n] for i in range(len(s)-n+1)] 
 
counter = Counter(chunk_string(s, 3)) 
# Counter({'AAC': 2, 'ACA': 1, 'CAA': 1, 'CTA': 1, 'TAA': 1}) 

编辑:详细说明chunk_string:

它接受一个字符串 s 和一个 block 大小 n 作为参数。每个 s[i:i+n] 都是字符串的一部分,长度为 n 个字符。循环遍历可以对字符串进行切片的有效索引(0 到 len(s)-n)。然后将所有这些切片分组到一个列表理解中。一个等效的方法是:

def chunk_string(s, n): 
    chunks = [] 
    last_index = len(s) - n 
    for i in range(0, last_index + 1): 
        chunks.append(s[i:i+n]) 
    return chunks