我可以使用以下代码生成列表[0, 2, 6, 12, 20, 30, 42, 56, 72, 90]
:
x = []
y = 0
for i in range(2,21,2):
x.append(y)
y += i
但是,我不确定如何将其转换为以下形式的列表理解语法
[可迭代IF条件中的值的表达式]
我可以使用以下代码生成列表[0, 2, 6, 12, 20, 30, 42, 56, 72, 90]
:
x = []
y = 0
for i in range(2,21,2):
x.append(y)
y += i
但是,我不确定如何将其转换为以下形式的列表理解语法
[可迭代IF条件中的值的表达式]
你可以在理解中赋值给y
,使用assignment expession,即使用:=
:
y = 0
x = [y := y + i for i in range(0,20,2)]
或者,您可以利用这些是triangular numbers的两倍的事实,然后您不需要y
(而是乘法):
x = [i * (i + 1) for i in range(10)]