【发布时间】:2021-08-11 01:13:07
【问题描述】:
这是我的代码中的一个函数:
def get_weights(Last_scan, Peak_shot):
Est_Succshots = [x*Peak_shot for x in Last_scan.values()]
Est_error = [np.sqrt(i)/Peak_shot for i in Est_Succshots]
Is = [1/m for m in Est_error]
Weights = [i/sum(Is) for i in Is]
return Weights
我使用了 4 个列表推导来进行计算。我想知道是否有更短的方法或不同的方法可以执行此类计算?感谢您的帮助:)
【问题讨论】:
-
我会说这是一个很好的例子,只使用 for 循环而不是列表推导。没有理由在每一步都创建一个新列表,因为您可以只使用 for 循环并一次完成所有计算,同时具有同样的可读性。
-
您可以将所有映射操作合并为一个。不知道这样是否更好。
-
不确定您是否需要在这里进行第二个循环,请使用
Is = [1/(np.sqrt(i)/Peak_shot) for i in Est_Succshots]并删除 Est_error
标签: python list list-comprehension