gpt4 book ai didi

python - 如果列表索引超出范围python错误,则分配变量

转载 作者:行者123 更新时间:2023-12-03 08:11:27 24 4
gpt4 key购买 nike

如果发现索引错误,如何将字符串传递给变量?考虑以下代码:

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.lists是单列文本文件,每行具有一个序列ID(文本和数字),用于从fasta1和fasta2文本文件中提取。

基本上,我想用 try:每个列表命令( a=fasta1[int(l1)]),如果没有错误(id在范围内),请照常进行操作(为该迭代分配变量a和b),但是如果没有,则分配'a'变量一些占位 rune 本,例如“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变量),然后将一些文本打印到stdout。

有任何想法吗?

最佳答案

Python的conditional(又名三元)表达式可以为您将此行单行。他们经常因缺乏可读性而受到批评,但是我认为这个例子读起来足够好。

a = fasta1[int(l1)] if int(l1) < len(fasta1) else "GGG"

关于python - 如果列表索引超出范围python错误,则分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42358456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com