我有一段代码可以正常工作,但不是一个接一个地打印结果,我想将它们附加到列表并返回列表。我尝试了一切我能想到但却失败的东西。请帮忙。
def calc_averages():
allprices = [ ['','','', '' ,1.0 ,2.0 ,1.2 ,1.3 ,1.1 , '', '',''],\
['','','' ,1.2 ,1.0 ,2.0 ,1.2 ,1.3 ,1.1 , '', '', ''],\
['','','' ,1.2, '' ,1.8 ,1.3 ,1.1 , '', '', '', ''],\
['','','', '' ,1.0 ,2.0 ,1.2 ,1.2 , '', '', '', ''],\
['','','', '' ,1.0 ,2.0 ,1.1 ,1.2 ,1.4 ,1.8 ,1.9 ,2.2] ]
averages = []
for lst in range(0,12):
counter = 0
total = 0
for item in allprices:
if item[lst] != '':
total = total + item[lst]
counter = counter + 1
if counter == 0:
print('')
else:
print(total/counter)
我希望在将值附加到其后返回平均值列表但返回为空列表。
答案 0 :(得分:3)
您没有附加到平均值或根本没有返回
def calc_averages():
allprices = [['','','', '' ,1.0 ,2.0 ,1.2 ,1.3 ,1.1 , '', '',''],
['','','' ,1.2 ,1.0 ,2.0 ,1.2 ,1.3 ,1.1 , '', '', ''],
['','','' ,1.2, '' ,1.8 ,1.3 ,1.1 , '', '', '', ''],
['','','', '' ,1.0 ,2.0 ,1.2 ,1.2 , '', '', '', ''],
['','','', '' ,1.0 ,2.0 ,1.1 ,1.2 ,1.4 ,1.8 ,1.9 ,2.2]]
averages = []
for outer in allprices:
counter = 0
total = 0
for item in outer:
if item != '':
total += item
counter += 1
if counter == 0:
print('')
else:
averages.append(total/counter)
return averages
print(calc_averages())
输出
[1.3199999999999998, 1.3, 1.35, 1.35, 1.5750000000000002]
答案 1 :(得分:0)
只需将值附加到列表averages
:
import statistics
def calc_averages():
allprices = [['','','', '' ,1.0 ,2.0 ,1.2 ,1.3 ,1.1 , '', '', ''],
['','','' ,1.2 ,1.0 ,2.0 ,1.2 ,1.3 ,1.1 , '', '', ''],
['','','' ,1.2, '' ,1.8 ,1.3 ,1.1 , '', '', '', ''],
['','','', '' ,1.0 ,2.0 ,1.2 ,1.2 , '', '', '', ''],
['','','', '' ,1.0 ,2.0 ,1.1 ,1.2 ,1.4 ,1.8 ,1.9 ,2.2]]
averages = []
for prices in zip(*allprices):
try:
averages.append(statistics.mean(p for p in prices if p!=''))
except statistics.StatisticsError:
averages.append('')
return averages