我有以下列表,其中包含相同数量的随机值,即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.
答案 0 :(得分:7)
您可以使用:
sum(float(y) for x, y in zip(a, b) if float(x) < 60)
结果:
138.0
这个想法与a
同时迭代b
和zip
。然后,在对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