我不确定我的标题是否与我正在尝试做的完全一致,但本质上我得到了列表的平均值,并且我希望它不会添加到列表中,而是添加到列表中:颠倒python中的循环?
listoflists = [[1,2,3], [1,0,4], [0,5,1]]
#want [1, 3.5, 2.67]
final = []
for i in range(len(listoflists)):
count = 0
val = 0
for j in range(len(listoflists[i])):
if listoflists[i][j] != 0:
count += 1
val += listoflists[i][j]
final.append(float(val)/count)
print final #currently returns [2.0, 2.5, 3.0]
而不是添加1,2,3,并得到平均值6/3 = 2,我想它添加1,1,0(每个列表中的第一个值)并获得2/2 = 1(如果0 ,不要把它计算在内) 我该如何让循环来做到这一点呢?
使用[zip()](https://docs.python.org/3/library/functions.html#zip)转置列表列表,然后使用[sum()](https:// docs。 python.org/3/library/functions.html#sum)来获取转置列表的总和。 – wwii