list1中与list2对应的元素总和

时间:2015-07-29 13:30:00

标签: python list

我有以下列表,其中包含相同数量的随机值,即10:

a = ['74.93', '50.91', '74.66', '125.10', '98.72', '131.63', '26.46', '76.17', '100.68', '92.5']

b =  [ '23.',  '62.',  '68.',  '50.',  '77.',  '43.',  '76.',  '79.',  '70.',  '32.']

然后我使用了一个条件,它给出了<的值列表。 a_cut。

例如,如果我输入a_cut = 60

输出= [ '50.91', '26.46'] 这又与列表a中的索引1和6相对应。

所以我想知道如何对列表b中与列表a 中的索引相对应的值进行求和。

e.g。如果是a_cut = 60

我需要得到:

输出= 62. + 76. = 138.

3 个答案:

答案 0 :(得分:7)

您可以使用:

sum(float(y) for x, y in zip(a, b) if float(x) < 60)

结果:

138.0

这个想法与a同时迭代bzip。然后,在对a的值求和时,检查b的正确值。

答案 1 :(得分:1)

您可以使用ROW(1:1)-y执行此操作:

numpy

或者python的内置import numpy as np a = np.array([1,4,3,10]) b = np.array([1,1,1,1]) a_cut = 5 np.sum(b[a < a_cut]) 函数:

zip

然后是python的内置a = [1,4,3,10] b = [1,1,1,1] a_cut = 5 sum(el[1] for el in zip(a, b) if el[0] < a_cut) 函数:

filter

或者使用旧的a = [1,4,3,10] b = [1,1,1,1] a_cut = 5 sum(filter(lambda i: a[i] < a_cut, xrange(len(b)))) 循环:

for

很多方法可以帮助你。

答案 2 :(得分:0)

可以使用列表理解

a_cut = 60

a = ['74.93', '50.91', '74.66', '125.10', '98.72', '131.63', '26.46', '76.17', '100.68', '92.5']

b =  [ '23.',  '62.',  '68.',  '50.',  '77.',  '43.',  '76.',  '79.',  '70.',  '32.']
print sum( [float(b[i]) for i,n in enumerate(a) if float(n)<=float(a_cut)])

<强>输出:

138.0