下面的代碼采用 dna_string2 并在 dna_string1 中匹配它。然后它輸出匹配或匹配的索引位置,然后將回傳值遞增 1 以模擬“計數自身”。我面臨的問題是我需要將 2、4 和 10 的輸出值分配給它們自己的變數。我無法弄清楚如何分離輸出以便分配給各個變數。我嘗試過使用 split()。我嘗試過先寫入檔案。我覺得我已經嘗試了幾乎所有方法來分離輸出。任何專家的幫助將不勝感激。
定義函式
def get_most_likely_ancestor(dna_string1, dna_string2):
i = 0
g = len(dna_string2)
for i in range (len(dna_string1)):
i = 1
g = 1
if (dna_string1[i:g]) == (dna_string2):
locations = dna_string1.index(dna_string2, i)
locations = 1
return locations
功能輸入
dna_string1 = "GATATATGCATATACTT"
dna_string2 = "ATAT"
函式輸出(如圖所示)
2
4
10
uj5u.com熱心網友回復:
該函式需要更靈活以允許任意數量的匹配。
該函式不應對結果的呈現負責。
因此,讓我們只回傳一個串列并在呼叫者中處理表示。例如:-
def get_most_likely_ancestor(s1, s2):
offset = 0
olist = []
while (i := s1[offset:].find(s2)) >= 0:
olist.append(offset := offset i 1)
return olist
for pos in get_most_likely_ancestor('GATATATGCATATACTT', 'ATAT'):
print(pos)
輸出:
2
4
10
uj5u.com熱心網友回復:
如果您知道函式回傳多少個值,您可以將每個值分配給一個單獨的變數。
first, second, third = get_most_likely_ancestor(dna_string1, dna_string2)
賦值的右側需要是一個序列,可以將其解壓縮為左側運算式的數量。
如果您無法預測該函式將回傳多少個值,這是大自然告訴您這是一個壞主意的多種方式之一。實際上,將所有值都放在一個串列中(或者,根據您的用例,可能是字典,或更復雜的資料結構,可能封裝在一個類中),您會更好。
uj5u.com熱心網友回復:
我想這可以幫助你完成你的專案:
def get_most_likely_ancestor(dna_string1, dna_string2):
i = 0
g = len(dna_string2)
global list_plain
list_plain = []
for i in range (len(dna_string1)):
i = 1
g = 1
if (dna_string1[i:g]) == (dna_string2):
locations = dna_string1.index(dna_string2, i)
locations = 1
list_plain.append(locations)
dna_string1 = "GATATATGCATATACTT"
dna_string2 = "ATAT"
get_most_likely_ancestor(dna_string1,dna_string2)
print(list_plain)
我同意@tripleee。對于更大或未知的資料,將它們封裝在一個類中是一個更好的主意。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/473845.html
標籤:Python python-3.x 功能 变量 视觉工作室代码
