作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个程序,其中我想在我的 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 个变量(j
和 k
)将分别从 1 和 2 运行并将结果附加到 aaseq2
和 aaseq3
列表中。
codon2 = seq[j:j+3]
codon3 = seq[k:k+3]
最佳答案
有多种方法可以做到这一点,最好的方法取决于您的 seq
在现实生活中有多大。其他答案提供了一些利用 Python 功能避免显式构建列表的好方法。
我会给你一个解决方案,遍历每组三个连续的字母,但根据 i%3
是否为 0
将它们分配给三个数组之一,1
或 2
。
对于您给出的示例 - 对我来说,这非常容易阅读,但大致保留了您开始时使用的数据结构,我假设您对此很熟悉。我冒昧地为 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/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!