rid*_*dua 8 python list-comprehension list
我正在尝试将以下循环转换为理解。
问题是input_list = [1, 2, 3, 4, 5]
返回一个列表,其中每个元素都是所有元素的倍数,直到该索引从左到右开始。
因此返回列表将是[1, 2, 6, 24, 120].
我拥有的正常循环(并且正在运行):
l2r = list()
for i in range(lst_len):
if i == 0:
l2r.append(lst_num[i])
else:
l2r.append(lst_num[i] * l2r[i-1])
Run Code Online (Sandbox Code Playgroud)
And*_*ely 13
Python 3.8+ 解决方案:
lst = [1, 2, 3, 4, 5]
curr = 1
out = [(curr:=curr*v) for v in lst]
print(out)
Run Code Online (Sandbox Code Playgroud)
印刷:
[1, 2, 6, 24, 120]
Run Code Online (Sandbox Code Playgroud)
其他解决方案(带itertools.accumulate):
from itertools import accumulate
out = [*accumulate(lst, lambda a, b: a*b)]
print(out)
Run Code Online (Sandbox Code Playgroud)