我不確定我的標題是否與我正在嘗試做的完全一致,但本質上我得到了列表的平均值,並且我希望它不會添加到列表中,而是添加到列表中:顛倒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