我是python和编程的新手,任何帮助将不胜感激!我在用Python编写的一段代码时遇到麻烦。我的任务是编写一个函数,计算一个特定字母出现的次数除以该顺序中字母的总数。
我的函数应该返回一个列表,其中包含每个序列的字母分数。
def calculate_let(sequences, letter):
calculate_letNew = []
for seq in sequences:
len(seq)
calculate_letNew = seq.count(letter)/len(seq)
return calculate_letNew
到目前为止,这是我的代码。即使列表sequenceA
有四个序列,输出也只给我一个一个序列的分数。
Letter_A = calculate_let(sequenceA, 'A')
print(Letter_A)
输出:0.10273972602739725
我一直在尽力解决这个问题,但是老实说,我不知道从哪里开始。
答案 0 :(得分:1)
我认为您打算这样列出他们:
请注意,list.append
方法会将元素添加到列表中。
def count_lett(sequences, AminoAcid):
count_lettNew = []
for seq in sequences:
count_lettNew.append(seq.count(AminoAcid)/len(seq))
return count_lettNew
作为随机建议:
Python仅使用TitleCase作为类名,所以我会选择编写这样的代码(为简单起见,保留forloop
):
def count_lett(sequences, amino_acid):
counts = [] # Although, you may consider something like fracs
# for "fractions" since these aren't actually counts
for seq in sequences:
counts.append(seq.count(amino_acid)/len(seq))
return counts
答案 1 :(得分:0)
您可以使用list comprehension以一种非常可读和简洁的方式进行操作:
def calc_freqs(sequences, letter):
return [seq.count(letter)/len(seq) for seq in sequences]
sequenceA = 'ALABAMA', 'MISSISSIPPI', 'UTAH', 'IDAHO'
letterA = calc_freqs(sequenceA, 'A')
print(letterA) # -> [0.5714285714285714, 0.0, 0.25, 0.2]