我應該在下面的代碼中添加或更改什么才能獲得一個可以找到平均讀取長度的函式???我必須撰寫一個函式mean_length,它接受一個引數:一個字典,其中鍵是讀取名稱,值是讀取序列。該函式必須回傳一個浮點數,它是序列讀取的平均長度。希望有人能幫助我 :D 我對 Python 編碼很陌生。
read_map = {'Read1': 'GGCTCCCCACGGGGTACCCATAACTTGACAGTAGATCTCGTCCAGACCCCTAGC',
'Read3': 'GTCTTCAGTAGAAAATTGTTTTTTTCTTCCAAGAGGTCGGAGTCGTGAACACATCAGT',
'Read2': 'CTTTACCCGGAAGAGCGGGACGCTGCCCTGCGCGATTCCAGGCTCCCCACGGG',
'Read5': 'CGATTCCAGGCTCCCCACGGGGTACCCATAACTTGACAGTAGATCTC',
'Read4': 'TGCGAGGGAAGTGAAGTATTTGACCCTTTACCCGGAAGAGCG',
'Read6': 'TGACAGTAGATCTCGTCCAGACCCCTAGCTGGTACGTCTTCAGTAGAAAATTGTTTTTTTCTTCCAAGAGGTCGGAGT'}
def mean_lenght (read_map):
print('keys : ',read_map.values())
for key in read_map.keys():
print(key)
#result = sum(...?)/len(read_map)
return result
print(mean_lenght(read_map))
uj5u.com熱心網友回復:
一個非常單行的簡單解決方案可能是:
def mean_length(read_map):
return sum([len(v) for v in read_map.values()]) / len(read_map)
基本上,您構建一個元素串列,每個元素存盤 的條目的長度read_map。然后,將所有這些長度相加并除以 dict 中的條目數。
如果你的字典很大,那么構建一個串列可能不是最有效的記憶體方式。在這種情況下:
def mean_length(read_map):
mean = 0
for v in read_map.values(): mean = len(v)
mean /= len(read_map)
return mean
通過這種方式,您無需構建任何中間串列。
uj5u.com熱心網友回復:
平均值是長度總和除以值的數量,所以讓我們這樣做:
sum(map(len, read_map.values()))/len(read_map)
輸出: 55.333
分解:
# "…" denotes the output of the previous line
read_map.values() -> returns the values of the dictionary
map(len, …) -> computes the length of each sequence
sum(…) -> get the total length
sum(…)/len(read_map) -> divide the total length by the number of sequence = mean
作為一個函式:
def mean_length(d):
return sum(map(len, d.values()))/len(d)
>>> mean_length(read_map)
53.33
uj5u.com熱心網友回復:
得到一個函式,找到平均讀取長度???
python內置模塊statistics有你要找的東西statistics.mean。自然地,您需要在所述函式中輸入資料之前找到長度,len內置函式對此很有用。
import statistics
read_map = {'Read1': 'GGCTCCCCACGGGGTACCCATAACTTGACAGTAGATCTCGTCCAGACCCCTAGC',
'Read3': 'GTCTTCAGTAGAAAATTGTTTTTTTCTTCCAAGAGGTCGGAGTCGTGAACACATCAGT',
'Read2': 'CTTTACCCGGAAGAGCGGGACGCTGCCCTGCGCGATTCCAGGCTCCCCACGGG',
'Read5': 'CGATTCCAGGCTCCCCACGGGGTACCCATAACTTGACAGTAGATCTC',
'Read4': 'TGCGAGGGAAGTGAAGTATTTGACCCTTTACCCGGAAGAGCG',
'Read6': 'TGACAGTAGATCTCGTCCAGACCCCTAGCTGGTACGTCTTCAGTAGAAAATTGTTTTTTTCTTCCAAGAGGTCGGAGT'}
print(statistics.mean(len(v) for v in read_map.values()))
輸出
55.333333333333336
uj5u.com熱心網友回復:
def mean_length(read_map):
total_chars = 0
for key in read_map.values():
total_chars = total_chars len(key)
result = total_chars / len(read_map)
return result
我認為這是初學者最直觀的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/322704.html
上一篇:在for回圈中不出現顫振元素
