gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:12 29 4
gpt4 key购买 nike

我一直在尝试调整我的 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 个字符。循环遍历可以对字符串进行切片的有效索引(0len(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

关于python - 计算字符串中的多个字母组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36435167/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com