我最近开始学习python,现在我正在学习python数据结构。我觉得我不完全理解列表理解是如何工作的。以下是以下问题:
实验室里的昆虫数量每个月都会翻一番。以昆虫的初始数量作为输入并输出一个列表,显示接下来12个月中每个月的昆虫数量,从0开始,这是初始值。因此,最终的列表应该包含12个项目,每个项目都显示了这个月初的昆虫数量。
我的代码尝试:
n = int(input())
list = [2**(i-1) for i in range(n, 13)]
print(list)但是,在输入不同的数字后,我不会得到期望的输出。
发布于 2021-05-31 03:28:38
不要调用变量list,因为list是一个内置的列表构造函数(在您的情况下这不是一个错误,但可能会成为一个错误)。除此之外,您还接近于一个正确的解决方案:
[n * 2**i for i in range(12)]
#[25, 50, 100, 200, 400, 800, 1600, 3200, 6400, 12800, 25600, 51200]发布于 2021-05-31 03:29:14
要解决这个问题,可以使用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]更多关于海象(:=)运算符这里的信息
提示:在python中,list是一个内置函数。因为您将列表命名为list,所以它与该函数相冲突,但会被重写。
在REPL模式下,由于其逐行执行的性质,此代码将无法工作(输出<class 'list'>),而在基于文件的正常执行中,您将无法使用list()函数重写列表变量。
因此,我将list变量重命名为comprehension。
https://stackoverflow.com/questions/67767565
复制相似问题