Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果列表索引超出范围,则分配变量python错误_Python_Indexing_Error Handling_Fasta_Index Error - Fatal编程技术网

如果列表索引超出范围,则分配变量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
命令进行任何结束或中断吗?请看-。