我怎样才能重写这个给我一个答案列表?

2024-10-03 15:25:19 发布

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

我是新的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

我一直在尽我最大的努力来解决这个问题,但老实说,我不知道从哪里开始。你知道吗


Tags: 函数代码列表len字母序列分数seq
2条回答

您可以使用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]

我想你是想列一张这样的清单:

注意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

相关问题 更多 >