如何在列表理解中完成作业



通常,每当我在python中执行for循环时,我都会尝试将其转换为列表理解。这里,我有一个for循环,在每个循环之后都会更改一个变量值。

k=5
for x in range(1,6):
k*=x
print(k)
#output
5
10
30
120
600

我想在列表理解中执行此操作。我试着这么做,但我遇到了语法错误。我在下面尝试过:

[k*=x for x in range(1,6)]

您可以使用walrus运算符(python 3.8+(:

k = 5
output = [k := k * x for x in range(1, 6)]
print(output) # [5, 10, 30, 120, 600]

但这种模式并不受一些人的欢迎。

另一种选择是使用itertools.accumulate:

from itertools import accumulate
from operator import mul
output = accumulate(range(1, 6), mul, initial=5)
print(*output) # 5 5 10 30 120 600

在这种情况下,初始值5被附加在开始处。

最新更新