如何使用列表理解来输出列表中的昆虫数量?

问题描述

最近开始学习python,现在在学习python数据结构。我觉得我并不完全理解列表推导式的工作原理。这是以下问题:

实验室中昆虫的数量每个月都会增加一倍。拿 初始昆虫数量作为输入并输出一个列表,显示 未来 12 个月的昆虫数量,从 0 开始, 这是初始值。因此,结果列表应包含 12 项目,每个项目都显示开始时的昆虫数量 月。

我的代码尝试:

TypeError: bot.recipesFor is not a function

但是在输入不同的数字后我没有得到想要的输出

解决方法

不要调用变量 list,因为 list 是一个内置的列表构造函数(在您的情况下这不是错误,但可能会成为错误)。除此之外,您已经接近正确的解决方案了:

[n * 2**i for i in range(12)]
#[25,50,100,200,400,800,1600,3200,6400,12800,25600,51200]
,

要解决这个问题,您可以使用 walrus 运算符。一个很好的方法是:

n = input("Enter no. of insects: ")  #e.g. input = '33'
result = int(n)                      # gets changed to 33 (int)
comprehension = [result := 2 * result  for _ in range (12)]

# comprehension = [66,132,264,528,1056,2112,4224,8448,16896,33792,67584,135168]

有关海象 (:=) 运算符 here 的更多信息

提示:在python中,list是一个内置函数。由于您将列表命名为 list,因此它与该函数冲突,但会被覆盖。

在 REPL 模式下,由于其逐行执行的性质,此代码将不起作用(输出 <class 'list'>),并且在基于文件的正常执行中,您将无法使用 { {1}} 函数覆盖列表变量。

所以我将 list() 变量重命名为 list