gpt4 book ai didi

python - 在 python 中使用具有多个变量的 for 循环

转载 作者:行者123 更新时间:2023-11-28 21:13:23 31 4
gpt4 key购买 nike

我正在编写一个程序,其中我想在我的 for 循环中使用 3 个变量,并且每个变量都应该从不同的起始索引运行。这是我的代码片段。我有一个名为密码子的表,其中每三个字母都有一些值,例如 'atg':'F', 'ggg':'Q' , 'ttg':'E'

seq='atgggggggcccccc'
seqlen= len(seq)
aaseq1=[]
aaseq2=[]
aaseq3=[]
for i in range(0,seqlen,3):
codon1 = seq[i:i+3]
aa1 = codons[codon1]
aaseq1.append(aa1)
print ''.join(aaseq1)

在这段代码中,我从位置 0 开始运行变量 i 但我想使用另外 2 个变量(jk)将分别从 1 和 2 运行并将结果附加到 aaseq2aaseq3 列表中。

 codon2 = seq[j:j+3]
codon3 = seq[k:k+3]

最佳答案

有多种方法可以做到这一点,最好的方法取决于您的 seq 在现实生活中有多大。其他答案提供了一些利用 Python 功能避免显式构建列表的好方法。

我会给你一个解决方案,遍历每组三个连续的字母,但根据 i%3 是否为 0 将它们分配给三个数组之一,12

对于您给出的示例 - 对我来说,这非常容易阅读,但大致保留了您开始时使用的数据结构,我假设您对此很熟悉。我冒昧地为 codons 添加了截断的 dict 以便代码运行。

codons = {'atg':'Methionine','tgg':'Tryptophan','ggg':'Glycine',
'ggc':'Glycine','gcc':'Alanine','ccc':'Proline'}

seq='atgggggggcccccc'
seqlen= len(seq)
aaseq=[[],[],[]]

for i in range(seqlen-2):
codon = seq[i:i+3]
aa = codons[codon]
aaseq[i%3].append(aa)

print 'aaseq1 ='
print ''.join(aaseq[0])
print 'aaseq2 ='
print ''.join(aaseq[1])
print 'aaseq3 ='
print ''.join(aaseq[2])

这给出了输出:

aaseq1 =
MethionineGlycineGlycineProlineProline
aaseq2 =
TryptophanGlycineGlycineProline
aaseq3 =
GlycineGlycineAlanineProline

如果你想要更简洁的形式 - 试试这个:

#Make every codon by zipping the sequence offset by one each time
codon_sequence = [''.join(z) for z in zip(seq,seq[1:],seq[2:])]
#Print every 3rd codon - starting at zero...
print 'aaseq1 = ',''.join([codons[c] for c in codon_sequence[::3]])
#...then starting at 1...
print 'aaseq2 = ',''.join([codons[c] for c in codon_sequence[1::3]])
#...you get the picture...
print 'aaseq3 = ',''.join([codons[c] for c in codon_sequence[2::3]])

当然 - 如果您需要进行进一步处理,您可以将序列分配给变量,而不是在最后一步打印序列。

关于python - 在 python 中使用具有多个变量的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32899750/

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