所以我想生成具有基因组长度(基因组长度)的个体群体(N),其基因组由'0','1'和'?s'组成我使用下面的代码并且它如何工作我需要我工作:
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但是这似乎不起作用,我无法找到如何创建一个空白数组来添加,任何人都可以帮助我吗?感谢
答案 0 :(得分:4)
您可以使用list comprehension -
lst = [generate_individual(10) for _ in range(N)] #You will need to define N before (or use a constant)
print lst
您不需要创建长度为N的空字符串列表,您可以改为创建您想要的列表,如上所述。
答案 1 :(得分:0)
您可以使用列表理解来完成此操作。
例如:
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导入,因为您在此示例代码中没有使用它。
答案 2 :(得分:0)
我的朋友告诉我这样做:
require 'fruity'
compare do
in_parallel { Parallel.map(a, in_threads:5){|h| [h["id"],h] if h["value"] > 0}.compact.to_h }
standard_array { a.map{|h| [h["id"],h] if h["value"] > 0}.compact.to_h }
end
#Running each test 64 times. Test will take about 6 minutes.
# standard_array is faster than in_parallel by 5x ± 1.0
你的解决方案和他的解决方案有什么不同吗?谢谢btw