转换总和为1的列表并保留值之间的关系

问题描述 投票:0回答:1

假设有一个像这样的

list[int]

[0, 2, 3, 3, 0, 9]

我想将其转换为总和为1的

list[float]
并保留值之间的关系:

[a, b, c, d, e, f]

# a = e = 0
# c = d
# f = 4.5b = 3c = 3d
# a + b + c + d + e + f = 1

[0.0, x, 1.5x, 1.5x, 0.0, 4.5x]

我猜有一个内置函数可以在某些模块中执行此操作,例如

math
statistics
,但不确定它叫什么。

python math statistics probability
1个回答
0
投票

不确定内置函数是否存在,但也许您可以只使用列表理解:

>>> input_list = [0, 2, 3, 3, 0, 9]
>>> [x / (total := sum(input_list)) for x in input_list]
[0.0, 0.11764705882352941, 0.17647058823529413, 0.17647058823529413, 0.0, 0.5294117647058824]

使用海象运算符 (

:=
) 确保
sum
仅计算一次。

© www.soinside.com 2019 - 2024. All rights reserved.