Python在数组中乘以和添加值

时间:2015-12-24 23:42:45

标签: arrays python-2.7 multidimensional-array

我正在尝试将数组中的多个值相加。这就是我所拥有的:

x = ['a', 2, 5, 10],['b', 3, 4, 11], ['c', 4, 2, 12], ['d', 5, 1, 13]

我想将每行的第2和第3个值相乘,然后将所有产品加在一起:

(2*5) + (3*4) + (4*2) + (5*1)

我还需要这个能够无限数量的行。

3 个答案:

答案 0 :(得分:0)

只需:

<div id="box1"></div>

但是你也可以在将来使用numpy来操作数组。

答案 1 :(得分:0)

sum(map(lambda item: item[1]*item[2], x))

适用于任意数量的行。我们在这里做的是:

  1. 定义lambda以乘以行的第2和第3个元素。
  2. 为每行应用lambda
  3. 总结结果
  4. 由于我们在这里使用迭代器,即使对于大量行,内存需求也很低。

答案 2 :(得分:0)

你可以在功能上做到:

x = ['a', 2, 5, 10],['b', 3, 4, 11], ['c', 4, 2, 12], ['d', 5, 1, 13]
from operator import itemgetter, mul
from itertools import starmap, imap

print(sum(starmap(mul, imap(itemgetter(1, 2), x))))
35

或功能和拆包的混合:

print(sum(a * b for a, b in  imap(itemgetter(1, 2), x)))
35

刚打开包装:

print(sum(a * b for _, a, b, _ in x))

或索引:

print(sum(sub[1] * sub[2] for sub in x))

如果速度是您的主要考虑因素并且可以解压缩,那么sum(a * b for _, a, b, _ in x)应该是最快的sum(sub[1] * sub[2] for sub in x)  并且使用列表实际上会更快但显然会占用更多内存。