如何在Python中将一个列表的成员与另一个列表对应成员相除?
假设我有两个数据集。一个是每周有多少用户尝试过我的服务的统计数据。
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])
你能想到更优雅的方法吗?
附加问题:这个结果是一个整数列表 [0, 0, 1, 0, 1, 0]
,而不是浮点数列表。有什么简单的方法可以得到一个浮点数列表吗?
4 个回答
2
怎么样
trials = [2,2,2,8,8,4]
conversions = [1,0,2,4,8,3]
conversion_rate = [conversion / trials[n] for n, conversion in enumerate(conversions)]
2
不使用zip和float:
[1.0*conversions[n]/trials[n] for n in xrange(len(trials))]
15
使用 zip 函数:
[c/t for c,t in zip(conversions, trials)]
如果你想要更优雅地处理浮点数,建议升级到 Python 3.x 版本。
如果你必须使用 Python 2.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
但要注意,这样做会影响你程序中所有地方的除法行为,所以你需要仔细检查一下,看看有没有地方需要整数除法。如果有的话,就用 //
代替 /
。