将两个多维列表相乘

时间:2014-11-27 02:12:26

标签: python list multidimensional-array

例如,

Price = [['1', '5'], ['4', '9']]

Quantity = [['50.00', '0'], ['10.00', '20.00']]

希望拥有

Revenue = [['50.00', '0'], ['40.00', '180.00']]

尝试使用列表推导,但不知道它对于这个二维列表是如何工作的。

4 个答案:

答案 0 :(得分:2)

使用内置函数zip

,您可以在没有任何模块的情况下执行此操作
Revenue = []
for ps, qs in zip(Price, Quantity):
    rs = []
    for p, q in zip(ps, qs):
        rs.append('%.2f' % (float(p) * float(q)))
    Revenue.append(rs)

答案 1 :(得分:2)

使用列表推导

>>> [ [str(float(p[0]) * float(q[0])), str(float(p[1]) * float(q[1]))]  for p, q in 
zip(price, quantity) ]
[['50.0', '0.0'], ['40.0', '180.0']]

答案 2 :(得分:1)

不是最具可读性,但可能是一个内容来执行此操作:

Revenue = [map(lambda (price,quantity) : str(float(price)*float(quantity)), zip(Price[i],Quantity[i])) for i in range(len(Price))]

答案 3 :(得分:1)

Numpy(或Pandas)中写一个这么简单明了,如果这些选项中的任何一个适合你,那么它只是:

Revenue = Price*Quantity

在完整的计划中:

import numpy as np
Price = np.array( [[1, 5], [4, 9]] )
Quantity = np.array( [[50.0, 0], [10.00, 20.00]] )

Revenue = Price*Quantity

# [[  50.    0.]
#  [  40.  180.]]

注意,在这里我放弃了OP的字符串表示法。我认为这是一个初学者的错误,并且他们希望数字是数字,并计划进行比这个更简单的计算。