首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修复python / Bioinformatics中的代码

修复python / Bioinformatics中的代码
EN

Stack Overflow用户
提问于 2017-11-08 01:28:37
回答 3查看 95关注 0票数 2

我正在尝试修复下面的代码。

代码语言:javascript
复制
  from pylab import *
    protein = ''
    amino_acids = ['P', 'G', 'L', 'A']
    while ________:
        protein += choice(amino_acids)

    if len(protein) == 1000:
        print(protein)

我想得到的结果是一个长度为1000的随机蛋白质,由四个给定的氨基酸(P,G,L和A)组成。怎么啦?

EN

回答 3

Stack Overflow用户

发布于 2017-11-08 01:39:05

一种可能的解决方案(在其他解决方案中,可能更多的是pythonic)是

代码语言:javascript
复制
from pylab import *
protein = ''
amino_acids = ['P', 'G', 'L', 'A']
while len(protein) <= 1000:
    protein = protein + choice(amino_acids)

print(protein)

在这里,您将创建一个空字符串proteinwhile循环从amino_acids开始并附加一个随机元素,直到字符串长度达到1000。

一行代码应该是

代码语言:javascript
复制
proteins = ''.join([choice(amino_acids) for x in range(1000)])

这里,使用所谓的list comprehensionamino_acids生成1000个选项。这1000个元素以列表的形式存储。应用join会将元素缩写为单个字符串。

请注意,''意味着我们不需要在氨基酸之间使用分隔符。例如,使用'-'将导致类似如下的结果

代码语言:javascript
复制
L-A-P-G-L-...
票数 4
EN

Stack Overflow用户

发布于 2018-02-21 03:32:51

另一种方法是生成一个随机数列表,然后使用for循环遍历随机数列表并附加到蛋白质字符串上。

代码语言:javascript
复制
import random
rand_num=[]
protein=''
amino=['P', 'G', 'L', 'A']

for i in range(1000):
    x=ranom.randint(0,(len(amino)-1))
    rand_num.append(x)

for index in rand_num:
    protein+=amino[index]
票数 0
EN

Stack Overflow用户

发布于 2018-08-13 23:37:49

为什么不是这个呢?

代码语言:javascript
复制
import random

amino_acids = ['P', 'G', 'L', 'A']
N = 10  # should be 1000 in your case
protein = ''.join( aa for aa in random.choices(amino_acids, k=N) )

如上所述,蛋白质可以是'PLLGAPAPGA‘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47163992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档