![](/img/trans.png)
[英]How to deal with different size lists in python and indexes (List indexes)
[英]Python: Summing indexes in different lists
以下是两个列表列表,我正在尝试创建一个sum_list
,该列表将汇总每个列表中的每个索引,然后将其附加到一个列表中( sum_list
)
例如over_50
list = list1(row[0])
= 52 + list2(row[0])
= 31 ..... total sum_list(row[0])
= 83
然后追加到under_50
sums_list
over_50k = [52, 0.09233516133146283, None, None, 9, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 0, 0, 45, None], [31, 0.6329549802321133, None, None, 14, 0.06261956383114399, 0.23708710623644944, 0.10916974875653615, 0.9076648386685372, 0.15036347404667771, 14084, 0, 50, None], [42, 0.6329549802321133, None, None, 13, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 5178, 0, 40, None], [37, 0.6329549802321133, None, None, 10, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.04935594949623773, 0.8496365259533223, 0, 0, 80, None], [30, 0.04501976788674914, None, None, 13, 0.8534625685499299, 0.23708710623644944, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None], [40, 0.6329549802321133, None, None, 11, 0.8534625685499299, 0.1184797857416146, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None]
under_50k = [52, 0.09233516133146283, None, None, 9, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 0, 0, 45, None], [31, 0.6329549802321133, None, None, 14, 0.06261956383114399, 0.23708710623644944, 0.10916974875653615, 0.9076648386685372, 0.15036347404667771, 14084, 0, 50, None], [42, 0.6329549802321133, None, None, 13, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 5178, 0, 40, None], [37, 0.6329549802321133, None, None, 10, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.04935594949623773, 0.8496365259533223, 0, 0, 80, None], [30, 0.04501976788674914, None, None, 13, 0.8534625685499299, 0.23708710623644944, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None], [40, 0.6329549802321133, None, None, 11, 0.8534625685499299, 0.1184797857416146, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None]
我的代码如下:
def sums_list(under_50k, over_50k):
sums_list = []
for index in range(14):
sums_list.append(under_50k[index]+over_50k[index])
print(sums_list)
return(sums_list)
如果有人可以帮我这个忙,我会非常感激,我已经看了一段时间了!
这可以通过numpy轻松完成:
>>> import numpy as np
>>> over_50k = [52, 0.09233516133146283, None, None, 9, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 0, 0, 45, None], [31, 0.6329549802321133, None, None, 14, 0.06261956383114399, 0.23708710623644944, 0.10916974875653615, 0.9076648386685372, 0.15036347404667771, 14084, 0, 50, None], [42, 0.6329549802321133, None, None, 13, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 5178, 0, 40, None], [37, 0.6329549802321133, None, None, 10, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.04935594949623773, 0.8496365259533223, 0, 0, 80, None], [30, 0.04501976788674914, None, None, 13, 0.8534625685499299, 0.23708710623644944, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None], [40, 0.6329549802321133, None, None, 11, 0.8534625685499299, 0.1184797857416146, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None]
>>>
>>> under_50k = [52, 0.09233516133146283, None, None, 9, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 0, 0, 45, None], [31, 0.6329549802321133, None, None, 14, 0.06261956383114399, 0.23708710623644944, 0.10916974875653615, 0.9076648386685372, 0.15036347404667771, 14084, 0, 50, None], [42, 0.6329549802321133, None, None, 13, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 5178, 0, 40, None], [37, 0.6329549802321133, None, None, 10, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.04935594949623773, 0.8496365259533223, 0, 0, 80, None], [30, 0.04501976788674914, None, None, 13, 0.8534625685499299, 0.23708710623644944, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None], [40, 0.6329549802321133, None, None, 11, 0.8534625685499299, 0.1184797857416146, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None]
>>> over_50k=np.array(over_50k,dtype=float) # dtype=float converts None to nan
>>> under_50k=np.array(under_50k,dtype=float)
>>> over_50k=np.nan_to_num(over_50k) # np.nan_to_num() converts nan to zero
>>> under_50k=np.nan_to_num(under_50k)
>>> over_50k_sum=sum(over_50k)
>>> under_50k_sum=list(sum(under_50k))
>>> under_50k_sum=list(sum(under_50k))
>>> under_50k_sum
[232.0, 2.669174850146665, 0.0, 0.0, 70.0, 4.3299324065807934, 1.3456191812268843, 3.8829230965438084, 2.8427496492794284, 4.3985461038132891, 19262.0, 0.0, 295.0, 0.0]
>>> over_50k_sum
[232.0, 2.669174850146665, 0.0, 0.0, 70.0, 4.3299324065807934, 1.3456191812268843, 3.8829230965438084, 2.8427496492794284, 4.3985461038132891, 19262.0, 0.0, 295.0, 0.0]
over_50k = [[52, 0.09233516133146283, None, None, 9, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 0, 0, 45, None], [31, 0.6329549802321133, None, None, 14, 0.06261956383114399, 0.23708710623644944, 0.10916974875653615, 0.9076648386685372, 0.15036347404667771, 14084, 0, 50, None], [42, 0.6329549802321133, None, None, 13, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 5178, 0, 40, None], [37, 0.6329549802321133, None, None, 10, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.04935594949623773, 0.8496365259533223, 0, 0, 80, None], [30, 0.04501976788674914, None, None, 13, 0.8534625685499299, 0.23708710623644944, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None], [40, 0.6329549802321133, None, None, 11, 0.8534625685499299, 0.1184797857416146, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None]]
under_50k = [[52, 0.09233516133146283, None, None, 9, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 0, 0, 45, None], [31, 0.6329549802321133, None, None, 14, 0.06261956383114399, 0.23708710623644944, 0.10916974875653615, 0.9076648386685372, 0.15036347404667771, 14084, 0, 50, None], [42, 0.6329549802321133, None, None, 13, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.9076648386685372, 0.8496365259533223, 5178, 0, 40, None], [37, 0.6329549802321133, None, None, 10, 0.8534625685499299, 0.25098839433745695, 0.7547506695574544, 0.04935594949623773, 0.8496365259533223, 0, 0, 80, None], [30, 0.04501976788674914, None, None, 13, 0.8534625685499299, 0.23708710623644944, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None], [40, 0.6329549802321133, None, None, 11, 0.8534625685499299, 0.1184797857416146, 0.7547506695574544, 0.0351995918887897, 0.8496365259533223, 0, 0, 40, None]]
from itertools import izip_longest,ifilterfalse
over_zipped = izip_longest(*over_50k,fillvalue=0)
under_zipped = izip_longest(*under_50k,fillvalue=0)
over = [sum(ifilterfalse(lambda x: x is None,x)) for x in over_zipped]
under =[sum(ifilterfalse(lambda x: x is None,x)) for x in under_zipped]
使用izip_longest
fillvalue
0的fillvalue
将处理长度不均匀的列表,然后我们对每列求和,并使用ifilterfalse
删除None。
In [26]: over
[232, 2.669174850146665, 0, 0, 70, 4.329932406580793, 1.3456191812268843, 3.8829230965438084, 2.8427496492794284, 4.398546103813289, 19262, 0, 295, 0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.