有什么建议可以使此脚本运行更快?通常,此脚本的行数超过两到一千万。

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))。同样也不知道它能快多少。

10-04 14:37