Python 我怎样列一张清单
所以我想生成一个基因组长度为genomelength的N个个体群体,其中他们的基因组由“0s”、“1s”和“s”组成。我使用下面的代码,它按照我需要的方式工作:Python 我怎样列一张清单,python,arrays,list,python-2.7,numpy,Python,Arrays,List,Python 2.7,Numpy,所以我想生成一个基因组长度为genomelength的N个个体群体,其中他们的基因组由“0s”、“1s”和“s”组成。我使用下面的代码,它按照我需要的方式工作: import random import numpy as np def generate_individual(genomelength): individual = '' for i in range(genomelength): locus = random.random() i
import random
import numpy as np
def generate_individual(genomelength):
individual = ''
for i in range(genomelength):
locus = random.random()
if 0<=locus <0.25:
i = '0'
elif 0.25<=locus<0.5:
i = '1'
else:
i = '?'
individual += i
return individual
print generate_individual(10)
但是,我现在需要编写一个函数,该函数将运行N次以生成此类字符串的填充,并将它们存储在列表/数组中。
我想生成一个N长的零列表,但这似乎不起作用,我也不知道如何创建一个空白数组来添加,有人能帮我吗?谢谢您可以使用-
您不需要创建长度为N的空字符串列表,而是可以如上所述动态创建所需的列表。您可以通过列表理解来完成此操作 例如:
import random
def generate_individual(genome_length):
individual = ''
for i in range(genome_length):
locus = random.random()
if 0 <= locus < 0.25:
i = '0'
elif 0.25 <= locus< 0.5:
i = '1'
else:
i = '?'
individual += i
return individual
genomes = [generate_individual(10) for _ in range(10)]
print genomes
另外,我删除了numpy导入,因为在这个示例代码中您没有使用它。我的朋友告诉我这样做:
def generate_population(N, genomelength):
x = []
for i in range(N):
i = gen_individual(genomelength)
x.append(i)
你的解决方案和他的有什么不同吗?顺便说一句,这是一个小小的修正,但是在Python中,如果你没有在循环中使用var,你应该在循环中加入一个uz:这只是一个惯例,不是一个严格的规则:使用列表理解比使用Python作为循环快,因为列表理解使用C作为循环。此外,具有列表理解功能的函数类似于-def generate_populationN,genomelength:return[generate_individualgenomelength for uu in range],它在一行代码中实现了您想要的功能。如果您没有使用numpy,因为在这段代码中您没有,去掉导入,你的程序运行速度会明显加快。使用列表理解将比使用python for循环的his快,因为列表理解使用C for循环。此外,具有列表理解功能的函数类似于-def generate_populationN,genomelength:return[generate_individualgenomelength for u in range],它在一行代码中完成您想要的功能。
def generate_population(N, genomelength):
x = []
for i in range(N):
i = gen_individual(genomelength)
x.append(i)