Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我怎样列一张清单_Python_Arrays_List_Python 2.7_Numpy - Fatal编程技术网

Python 我怎样列一张清单

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

所以我想生成一个基因组长度为genomelength的N个个体群体,其中他们的基因组由“0s”、“1s”和“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长的零列表,但这似乎不起作用,我也不知道如何创建一个空白数组来添加,有人能帮我吗?谢谢

您可以使用-


您不需要创建长度为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)