看板 Python 關於我們 聯絡資訊
※ 引述《eric2853 (eric)》之銘言: : 大家好 : 我是一個剛學python沒多久的初學者 : 因為本身是生物相關背景 所以未來想利用python做一些比較跟計算 : 例如我想要比較兩個DNA序列中 有哪些不一樣的地方 : 若是序列相同 則將他取代成"." : 例如 : a = "atcgatcgaaa" : b = "atccagcgaac" : 則print出 兩段序列 : "...g.t....a" : "...c.g....c" : 以下是我的練習code: : a = "atcgatcgaaa" : b = "atccagcgaac" 這邊for的用法有問題 python迴圈可以用集合的概念來想 for [element] in [set]: #.... 碰到不熟的語言 你可以用print去確認你的code到底發生了什麼事 for i in a[i]: print (i) # print element in set a[i] : for i in a[i]: #利用元素位置去找 你似乎不太清楚i變數到底代表什麼 : if a[i] == b[i]: # 你在這邊把i當成數字 : c = a.replace(i,".") # 你在這邊把i當char : d = b.replace(i,".") 另外我不建議你使用replace,他會取代複數個字 : print(c,d) : 可是都會出現錯誤代碼 string indices must be integers : 我其實看不太懂他想表達的意思 : 請問各位前輩我該如何改我的code : 非常謝謝大家 最後附上弱弱的code a = "atcgatcgaaa" b = "atccagcgaac" a_list = list(a) # List是python很基礎的結構 建議熟悉它 b_list = list(b) # 轉成List是因為list才能作assign的操作 (a_list[i] = '.') for i in range(len(a)): # 在這邊我把i當數字,請注意a長度必需與b相等 if a_list[i] == b_list[i]: a_list[i] = '.' b_list[i] = '.' a = "".join(a_list) # 將list轉回string b = "".join(b_list) print(a) print(b) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.178.157 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1457457862.A.260.html
eric2853: 其實我剛剛在自己練習時有發現我i那邊搞錯 主要是數字 03/09 01:46
eric2853: 跟字串的不同 不過我的主要問題還是在如何取代 真的非常 03/09 01:46
eric2853: 感謝你詳細的說明 我還太初學 基礎要好好打了 再次謝謝 03/09 01:46
eric2853: 你 03/09 01:46
tiefblau: range(min(len(a), len(b))) 03/09 02:09
bibo9901: "".join( u if u == v else "." for u,v in zip(a,b) ) 03/09 15:04
s06yji3: 樓上的條件反了樓上的條件反了 03/10 11:24
Ziom: 也可以直接用字串型式來處理 03/10 20:31
Ziom: a = "atcgatcgaaa" 03/10 20:31
Ziom: b = "atccagcgaac" 03/10 20:31
Ziom: aa = "" 03/10 20:32
Ziom: bb = "" 03/10 20:32
Ziom: for i in range(len(a)): 03/10 20:32
Ziom: if a[i] == b[i]: 03/10 20:32
Ziom: aa += "." 03/10 20:32
Ziom: bb += "." 03/10 20:32
Ziom: else: 03/10 20:33
Ziom: aa += a[i] 03/10 20:33
Ziom: bb += b[i] 03/10 20:33
Ziom: print aa 03/10 20:33
Ziom: print bb 03/10 20:33
IKAFIRE: 樓上開銷略大,join較佳 03/10 23:10
Sunal: bibo9901 的解法不錯.... 03/11 00:08