有什么建议可以使此脚本运行更快?通常,此脚本的行数超过两到一千万。
while True:
line=f.readline()
if not line:break
linker='CTGTAGGCACCATCAAT'
line_1=line[:-1]
for i in range(len(linker)):
if line_1[-i:]==linker[:i]:
new_line='>\n'+line_1[:-i]+'\n'
seq_1.append(new_line_1)
if seq_2.count(line)==0:
seq_2.append(line)
else:pass
else:pass
最佳答案
首先,您似乎在内部循环中创建了很多字符串对象。您可以先尝试构建前缀列表:
linker = 'CTGTAGGCACCATCAAT'
prefixes = []
for i in range(len(linker)):
prefixes.append(linker[:i])
另外,您可以使用
string
的方法endswith
代替在内部循环的条件下创建新对象:while True:
line=f.readilne()
if not line:
break
for prefix in prefixes:
if line_1.endswith(prefix):
new_line='>\n%s\n' % line_1[:-len(prefix)]
seq_1.append(new_line_1)
if seq_2.count(line)==0:
seq_2.append(line)
我不确定那里的索引(例如
len(prefix)
)。同样也不知道它能快多少。