在Python中,如何将一个列表的成员除以另一个列表的相应成员?

在Python中,如何将一个列表的成员除以另一个列表的相应成员?,python,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]

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

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]
,而不是浮动列表。获取浮动列表的最简单方法是什么?

使用zip:

[c/t for c,t in zip(conversions, trials)]
获取浮动的最优雅的方法是升级到Python3.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
但请注意,这将影响程序中任何地方的除法行为,因此您需要仔细检查是否有需要整数除法的地方,如果是,请编写
/
而不是
/

如何

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)]

如果您碰巧正在使用
numpy
,您可以使用以下想法:

import numpy as np
conversion_rate = np.divide(trials, conversions)
或者,使用广播:

import numpy as np
trials = np.array([2, 2, 2, 8, 8, 4])
conversions = np.array([1, 0, 2, 4, 8, 3])
conversion_rate = 1.0 * trials / conversions

不使用zip和float:

[1.0*conversions[n]/trials[n] for n in xrange(len(trials))]

当然可以。马克·拜尔斯的答案要好得多,如果我有足够的repAt,我会先用
zipWith
来回答,但后来我意识到它在python中并不存在。多么悲哀……我有
q=[[7,2,3],[4,5,6]
r=[[6,1,2],[3,4,5]
。我需要划分相应的元素<代码>B=[[q中j的浮点数(j)/q中j的浮点数(i)]r中i的浮点数]
。但是,我一直得到一个错误:TypeError:float()参数必须是字符串或数字。我从未来引进了部门。有什么建议吗?