刚刚学python,想写一个关于文本内容比对的代码,这是从文本中摘取的几列内容
#Sequence Barcode Count Percentage(%)
AAGAGTGTATGTAGGGAGGA barcodeMD-AS-17MD-S-50 73974821 1.240810
GGTGGAAGGGGGAGGTGGTG barcodeMD-AS-21MD-S-61 73670799 1.235710
GGTGGAAGGGCTAGGGAGCA barcodeMD-AS-21MD-S-50 73627661 1.234987
GGAGTTATGGCTGAGTGGTT ambiguous 22315579 0.374308
我需要比对的ambiguous这一行的Sequence和其他列的Sequence中不同的碱基,如果超过3个碱基不同,就将他舍弃,如果是三个碱基以下则将其写入文本文件中,并输出一共有多少有个碱基差异小于3个序列。
现在代码写完了,但是我嵌套了三个循环导致代码运行速度很慢,有办法可以提高他跑的速度呢?
目前我采用的方法是,一条序列中的元素与另一条序列中的元素,一一对应进行比较,还有别的方法可以达到这样的效果吗?
allcount = 0 #定义一个计数器
for w in range(0,listAmbiguousLen): #我将所有的ambiguous列添加到了一个列表中,listAmbiguousLen 指的是ambiguous一共有多少行
for u in range(0,lenSeq): #Seq是整个文本,lenSeq指的是这个文本一共有多少行
count = 0 # 定义一个计数器
uncount = 0
for x in range(0,lenAmbiguous): # lenAmbiguous 指的是Sequence列中,碱基的个数,一般为20个
if listAmbiguous[w][x] == Seq[u][x]: #如果first的元素与list的元素相同
count = count + 1
else: # 如果不相同
uncount = uncount+1
if uncount>3: # 如果碱基不同的个数大于3个,则舍弃
break
elif count > lenAmbiguous-number: #如果碱基小于三个,就把他写入文档中
allcount = allcount + 1 #allcount+1
l.write(str(uncount)+"\t"+listAmbiguous[w]+"\t\t"+Seq[u])
break