问题描述
最近开始学习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
。