如果列表索引超出范围,则分配变量python错误
如果发现索引错误,如何将字符串传递给变量?考虑代码:如果列表索引超出范围,则分配变量python错误,python,indexing,error-handling,fasta,index-error,Python,Indexing,Error Handling,Fasta,Index Error,如果发现索引错误,如何将字符串传递给变量?考虑代码: for l1, l2 in zip(open('file1.list'), open ('file2.list')): a=fasta1[int(l1)] b=fasta2[int(l2)] alignments = pairwise2.align.globalxx(a,b) top_aln = alignments[0] aln_a, aln_b, score, begin, end = top_aln print
for l1, l2 in zip(open('file1.list'), open ('file2.list')):
a=fasta1[int(l1)]
b=fasta2[int(l2)]
alignments = pairwise2.align.globalxx(a,b)
top_aln = alignments[0]
aln_a, aln_b, score, begin, end = top_aln
print aln_a+'\n'+aln_b
outfast1 = aln_a
outfast2 = aln_b
必须导入许多这样的函数(pairwise2 align),
但是file.list是单列文本文件,每行有一个序列id(文本和数字),用于从fasta1和fasta2文本文件中提取
基本上,我希望尝试:
每个列表命令(a=fasta1[int(l1)]
),如果没有错误(id在范围内),则按正常方式执行(为该迭代分配变量a和b),但如果没有,则为“a”变量分配一些占位符文本,如“GGG”:
for l1, l2 in zip(open('file1.list'), open ('file2.list')):
try:
a=fasta1[int(l1)]
except IndexError,e:
a="GGG"
continue
try:
b=fasta2[int(l2)]
except (IndexError):
b="CCC"
continue
这段代码不太管用(当与上面的代码集成时),这并不奇怪,因为我缺乏python的能力,但我不知道为什么。我实际上没有得到文本输出,尽管打印调用。。。我想的对吗?如果索引中没有错误,我只希望它继续并进行两两对齐(使用第一个a和b变量),然后将一些文本打印到标准输出
有什么想法吗 Python(也称为三元)表达式可以为您提供一行代码。他们经常被批评缺乏可读性,但我认为这个例子读起来已经足够好了
a = fasta1[int(l1)] if int(l1) < len(fasta1) else "GGG"
a=fasta1[int(l1)]如果int(l1)
Python(也称为三元)表达式可以为您提供一行代码。他们经常被批评缺乏可读性,但我认为这个例子读起来已经足够好了
a = fasta1[int(l1)] if int(l1) < len(fasta1) else "GGG"
a=fasta1[int(l1)]如果int(l1)您不需要继续
,因为它将跳过循环的迭代。考虑以下事项:
for l1, l2 in zip(open('file1.list'), open ('file2.list')):
a = 'GGG'
b = 'CCC'
try:
a = fasta1[int(l1)]
b = fasta2[int(l2)]
except IndexError:
pass
您不需要继续,因为它将跳过循环的迭代。考虑以下事项:
for l1, l2 in zip(open('file1.list'), open ('file2.list')):
a = 'GGG'
b = 'CCC'
try:
a = fasta1[int(l1)]
b = fasta2[int(l2)]
except IndexError:
pass
你的缩进正确吗?continue
语句是否在except套件中?您是否了解如果执行了if,则跳过它之后的所有内容并开始下一次迭代?我认为它应该与try/except匹配?Python没有标记缩进结构,但它在obv中不起作用。如果没有索引错误,我想继续。不,我没有。我不想那样。因此,我不需要对try
命令进行任何结束或中断吗?请看-。缩进是否正确?continue
语句是否在except套件中?您是否了解如果执行了if,则跳过它之后的所有内容并开始下一次迭代?我认为它应该与try/except匹配?Python没有标记缩进结构,但它在obv中不起作用。如果没有索引错误,我想继续。不,我没有。我不想那样。因此,我不需要对try
命令进行任何结束或中断吗?请看-。