Skip to main content
 首页 » 编程设计

python之折叠列表列表以生成列表

2025年05月04日9shanyou

所以我得到了以下列表:

cd = [[0.1,0.2,0.1,0.9], [0.2, 0.3, 0.4, 0.1],[0.2,0.3,0.1,0.5] 

我想以列表格式获取嵌套列表的各个元素的乘积...

所以我打算:

p = [(0.1*0.2*0.2),(0.2*0.3*0.3),(0.1*0.4*0.1),(0.9*0.1*0.5)] 

请注意,这不是 cd 和 p 之间的一对一关系。

我想简单地做...

例如,在 F# 中,我只执行 list.fold,并使用列表作为我的累加器。是否有 python 等效项,或者我必须这样做:

p = [cd[0]] 
if len(cd) > 1: 
    for i in range(len(cd) - 1): 
        for j in range(len(p)): 
            p[j] = p[j]*cd[i+1][j] 
return p 

请您参考如下方法:

你可以这样做:

[reduce(lambda a, b: a*b, x)  for x in zip(*cd)] 

这应该适用于多个列表,并且不需要任何导入。

正如@DSM 提到的,您还必须“导入 functools”并为 python3 使用“functools.reduce”。