作者sariel0322 (sariel)
看板Python
标题[问题] 如何修改code让其跑更快
时间Sun Jul 20 20:16:12 2014
不好意思,最近需要跑相当大量的资料
因此需要把code的速度做最有效的提升
这是我的两个data
pfam.csv_IPR_NA.csv(csv不小心重复了,不过不是重点:p):
http://ppt.cc/oB18
proteinIDandGOID_norepet.csv:
http://ppt.cc/NSE3
我需要把第一个csv的第二栏跟第二个csv的第一个栏位做对应
有对应到的全部做输出
类似下面这样:
http://ppt.cc/UA7t
以下是我的code:
import csv
proteinID = []
GOID = []
a = 0
o = open("final.csv","w")
g = open("proteinIDandGOID_norepet.csv","r")
f = open("pfam.csv_IPR_NA.csv","r")
for row in csv.reader(g):
proteinID.append(row[0])
GOID.append(row[1])
for row in csv.reader(f):
for i in range(len(GOID)):
if row[1] == proteinID[i]:
o.write(row[0] + "," + row[1]+"," + row[2] + "," + GOID[i] + "\n")
f.close()
o.close()
g.close()
想问一下大家有没有更有效率的写法
感恩orz
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 182.235.15.230
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1405858575.A.61E.html
1F:推 goldflower:用while写在同一个回圈 用同一个index去跑 如果超出 07/20 22:21
2F:→ goldflower:其中一个的长度後再去做判断跑第二个回圈 这样咧@@? 07/20 22:22
3F:→ goldflower:这样应该能减少一次重复的判断 不知可行否 07/20 22:24
有点不懂,一样是两个回圈吗?
※ 编辑: sariel0322 (182.235.15.230), 07/20/2014 22:28:24
4F:→ mantour:以proteinID为key建立搜寻树 07/20 23:13
5F:推 mantour:proteinID和GOID的对应是唯一的吗 同样proteinID是否会有 07/20 23:19
6F:→ mantour:两个以上的GOID? 07/20 23:19
7F:→ sariel0322:个csv都两个以上,只有一个我应该就用dict了…… 07/20 23:48
8F:→ sariel0322:刚才没打好,两个csv都两个以上 07/20 23:49
9F:→ sariel0322:都是同一栏重复两个以上的ID 07/20 23:51
10F:推 goldflower:欸对耶 我那样没跑比较快 只是长比较短XD 07/20 23:58
推 lc85301:用dict然後存set or list如何
07/21 02:02
嗯...可行吗?set过後应该会吧重复的都只取一个吧?
我的目的是要把两个csv中重复match的资料都取出来作整理排列
※ 编辑: sariel0322 (120.126.36.171), 07/21/2014 13:17:11