作者iyaicharles (0.0)
看板Python
标题Re: [问题] 比较并取代字串的文字
时间Wed Mar 9 01:24:19 2016
※ 引述《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://webptt.com/cn.aspx?n=bbs/Python/M.1457457862.A.260.html
1F:推 eric2853: 其实我刚刚在自己练习时有发现我i那边搞错 主要是数字 03/09 01:46
2F:→ eric2853: 跟字串的不同 不过我的主要问题还是在如何取代 真的非常 03/09 01:46
3F:→ eric2853: 感谢你详细的说明 我还太初学 基础要好好打了 再次谢谢 03/09 01:46
4F:→ eric2853: 你 03/09 01:46
5F:推 tiefblau: range(min(len(a), len(b))) 03/09 02:09
6F:→ bibo9901: "".join( u if u == v else "." for u,v in zip(a,b) ) 03/09 15:04
7F:推 s06yji3: 楼上的条件反了楼上的条件反了 03/10 11:24
8F:→ Ziom: 也可以直接用字串型式来处理 03/10 20:31
9F:→ Ziom: a = "atcgatcgaaa" 03/10 20:31
10F:→ Ziom: b = "atccagcgaac" 03/10 20:31
11F:→ Ziom: aa = "" 03/10 20:32
12F:→ Ziom: bb = "" 03/10 20:32
13F:→ Ziom: for i in range(len(a)): 03/10 20:32
14F:→ Ziom: if a[i] == b[i]: 03/10 20:32
15F:→ Ziom: aa += "." 03/10 20:32
16F:→ Ziom: bb += "." 03/10 20:32
17F:→ Ziom: else: 03/10 20:33
18F:→ Ziom: aa += a[i] 03/10 20:33
19F:→ Ziom: bb += b[i] 03/10 20:33
20F:→ Ziom: print aa 03/10 20:33
21F:→ Ziom: print bb 03/10 20:33
22F:推 IKAFIRE: 楼上开销略大,join较佳 03/10 23:10
23F:推 Sunal: bibo9901 的解法不错.... 03/11 00:08