假设我有两个数据集。我每周都有用户尝试我的服务。

trials = [2,2,2,8,8,4]

我每周都有一份注册试用用户的统计表。
conversions = [1,0,2,4,8,3]

我可以很快做到这一点:
conversion_rate = []
for n in range(len(trials)):
   conversion_rate.append(conversions[n]/trials[n])

你能想出一个更优雅的方法吗?
奖励:结果是一个int[0, 0, 1, 0, 1, 0]
,不是浮动列表。最简单的方法是什么?

最佳答案

使用拉链:

[c/t for c,t in zip(conversions, trials)]

获取float的最优雅的方法是升级到python 3.x。
如果需要使用Python2.x,那么可以编写以下代码:
>>> [float(c)/t for c,t in zip(conversions, trials)]
[0.5, 0.0, 1.0, 0.5, 1.0, 0.75]

或者,您可以在文件开头添加:
from __future__ import division

但请注意,这将影响程序中所有除法的行为,因此您需要仔细检查是否有需要整数除法的地方,如果有,请编写//而不是/

08-27 06:51