gpt4 book ai didi

python - python列中字母的频率

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

我想计算每个字母在所有列中出现的频率:例如我有这三个序列:

seq1=AATC
seq2=GCCT
seq3=ATCA

在这里,我们有:在第一列中,'A' 的频率是 2 ,'G' 是 1 。对于第二列:'A' 的频率为 1,'C' 为 1,'T' 为 1。(其余列相同)首先,我尝试执行计算频率的代码,我尝试这样做:

例如:

s='AATC'

dic={}
for x in s:
dic[x]=s.count(x)

这给出:{'A':2,'T':1,'C':1}现在,我想在列上应用它。为此,我使用了这条指令:

f=list(zip(seq1,seq2,seq3))

给出:

[('A', 'G', 'A'), ('A', 'C', 'T'), ('T', 'C', 'C'), ('C', 'T', 'A')]

所以,在这里,我计算 () 中字母的出现频率:我该怎么做?

如果我处理序列文件,如何使用此代码将其应用于文件序列?例如,每次我获取三个序列并应用此代码时,我的文件包含 100 个序列。

最佳答案

这里:

sequences = ['AATC',
'GCCT',
'ATCA']
f = zip(*sequences)
counts = [{letter: column.count(letter) for letter in column} for column in f]
print(counts)

输出(重新格式化):

[{'A': 2, 'G': 1}, 
{'A': 1, 'C': 1, 'T': 1},
{'C': 2, 'T': 1},
{'A': 1, 'C': 1, 'T': 1}]

显着特征:

  • 我们没有明确命名 seq1seq2 等,而是将它们放入列表中。
  • 我们使用 * 运算符解压列表。
  • 我们在列表理解中使用字典理解来生成每列中每个字母的计数。这基本上就是您为单序列案例所做的,但更具可读性(IMO)。

关于python - python列中字母的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21103320/

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