我如何制作清单

时间:2015-07-07 16:18:16

标签: python arrays list python-2.7 numpy

所以我想生成具有基因组长度(基因组长度)的个体群体(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但是这似乎不起作用,我无法找到如何创建一个空白数组来添加,任何人都可以帮助我吗?感谢

3 个答案:

答案 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