无法返回我想要的列表

时间:2016-02-21 19:17:47

标签: python python-3.x

我有一段代码可以正常工作,但不是一个接一个地打印结果,我想将它们附加到列表并返回列表。我尝试了一切我能想到但却失败的东西。请帮忙。

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)

我希望在将值附加到其后返回平均值列表但返回为空列表。

2 个答案:

答案 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