假设有一个像这样的
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
,但不确定它叫什么。
不确定内置函数是否存在,但也许您可以只使用列表理解:
>>> 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
仅计算一次。