使用python计算一个字母在某个位置出现的次数

2024-10-03 17:15:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个python初学者,我遇到过这个问题,我不确定我将如何着手解决它。在

如果我有以下序列/字符串:

关贸总协定

GTACGC公司

如何计算每个字母在每个位置出现的频率。ie)在两个序列中,G在位置1出现两次,A在位置1出现零次,等等

任何帮助都将不胜感激,谢谢!在


Tags: 字符串字母公司序列ie频率初学者gtacgc
2条回答

您可以使用^{}^{}的组合,如下所示:

from  collections import defaultdict

sequences = ['GATCCG', 'GTACGC']
d = defaultdict(lambda: defaultdict(int))  # d[char][position] = count
for seq in sequences:
    for i, char in enumerate(seq):  # enum('abc'): [(0,'a'),(1,'b'),(2,'c')]
        d[char][i] += 1

d['C'][3]  # 2
d['C'][4]  # 1
d['C'][5]  # 1

这将构建一个嵌套的defaultdict,它将字符作为第一个键,位置作为第二个键,并提供所述字符在所述位置的出现次数。在

如果需要职位统计列表:

^{pr2}$

不确定这是最好的方法,但您可以使用zip对字符串进行某种转置,在每个位置生成字母的元组,例如:

x = 'GATCCG' 
y = 'GTACGC'

zipped = zip(x,y)

print zipped

将产生:

^{pr2}$

从元组可以看出,两个字符串的第一个位置包含两个Gs,第二个位置包含A和T等,然后可以使用Counter(或其他方法)来获得所需的内容。在

相关问题 更多 >