首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在list-comprehension Python 3.7中重新定义列表

在list-comprehension Python 3.7中重新定义列表
EN

Stack Overflow用户
提问于 2019-10-09 18:55:39
回答 1查看 125关注 0票数 1

我正在编写一些代码,其中我已经定义了几个函数。所有这些函数都接受一个列表作为输入,然后返回一个变异的列表。然后是最后一个函数,它使用列表理解来进行x次的变异。

当它完成一个“循环”时,函数应该使用变异的列表作为输入,然而,我似乎找不到这样做的方法。它不断地循环同一个列表,导致错误的输出。当它完成所有这些突变时,它应该打印所有创建的列表的长度的列表。

我已经在没有列表理解的情况下解决了这个问题。它是有效的,但我希望能够通过理解来做到这一点。

注意: kills & reproduce是带有一些参数的预定义函数

函数+参数:

代码语言:javascript
复制
def simulate(viruses, mortalityProb, mutationProb, maxReproductionProb, maxPopulation, timesteps = 500):

可以工作的代码:

代码语言:javascript
复制
population = [len(viruses)]
for step in range(timesteps):
   viruses = reproduce(kill(viruses, mortalityProb), mutationProb, reproductionProbability(viruses, maxReproductionProb, maxPopulation))
   population.append(len(viruses))
return population

不起作用的代码:

代码语言:javascript
复制
return [len(virus) for virus in [reproduce(kill(viruses, mortalityProb), mutationProb, reproductionProbability(viruses, maxReproductionProb, maxPopulation)) for step in range(timesteps)]]

工作代码更改病毒列表,并在下一次运行中使用更改后的列表。在另一段代码中,它反复使用相同的病毒列表

EN

回答 1

Stack Overflow用户

发布于 2019-10-09 19:38:53

您需要正确地定义列表理解。下面的代码片断将返回给定时间戳内从再现方法生成的病毒的长度列表

代码语言:javascript
复制
return [len([virus for virus in reproduce(kill(viruses, mortalityProb), mutationProb, reproductionProbability(viruses, maxReproductionProb, maxPopulation))]) for step in range(timesteps)]

O/P将看起来像[3,4,5]

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

https://stackoverflow.com/questions/58302584

复制
相关文章

相似问题

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