Re: [问题] 比较并取代字串的文字

楼主: iyaicharles (0.0)   2016-03-09 01:24:19
※ 引述《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)
作者: eric2853 (eric)   2016-03-09 01:46:00
其实我刚刚在自己练习时有发现我i那边搞错 主要是数字跟字串的不同 不过我的主要问题还是在如何取代 真的非常感谢你详细的说明 我还太初学 基础要好好打了 再次谢谢你
作者: tiefblau (tiefblau)   2016-03-09 02:09:00
range(min(len(a), len(b)))
作者: bibo9901 (function(){})()   2016-03-09 15:04:00
"".join( u if u == v else "." for u,v in zip(a,b) )
作者: s06yji3 (阿南)   2016-03-10 11:24:00
楼上的条件反了楼上的条件反了
作者: Ziom (Oquainogen)   2016-03-10 20:31:00
也可以直接用字串型式来处理a = "atcgatcgaaa"b = "atccagcgaac"aa = ""bb = ""for i in range(len(a)):if a[i] == b[i]:aa += "."bb += "."else:aa += a[i]bb += b[i]print aaprint bb
作者: IKAFIRE (没有)   2016-03-10 23:10:00
楼上开销略大,join较佳
作者: Sunal (SSSSSSSSSSSSSSSSSSSSSSS)   2016-03-11 00:08:00
bibo9901 的解法不错....

Links booklink

Contact Us: admin [ a t ] ucptt.com