2016-02-21 55 views
2

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

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

你应该确保代码中的缩进是正确的,否则无法进行调试。 – wpercy

+0

它实际上不会返回任何东西。你需要显式地返回一个值。否则'没有'返回 – karthikr

+0

“我试过了我能想到的一切”?你说你想把它们追加到一个列表中,然后返回 - 你是否试图追加到列表并返回?我没有看到任何追加或返回您的功能... – kindall

回答

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] 
+0

它只在平均值列表中返回1个项目。应该有9个。 –

+0

你的平均计算是不正确的,你也不需要遍历'range(0,12)',因为你知道你的列表是嵌套的,你可以遍历它两次,并且应该有五个结果不是9(你有五个嵌套列表) – danidee

+0

那么我想要计算每个列表中第n个价格的平均值,所以计算实际上是为每个列表中的第4个值,自第一个列表开始,它是(1.2 + 1.2)/ 2,第四和第五个列表'第四个元素是空字符串,它不会计数它们。所以我的平均计算是正确的,现在我得到了所有的工作,计算并返回平均值列表。谢谢 –

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