2015-02-10 96 views
-1

我試圖找到由範圍10內的平均的陣列的在排序後的數組,例如:[1,2,3,5,11,12,13,15,22,25,27,30]應該返回[6,17,27]
功能應該通過的範圍爲10〜GROUPE的數量和使 之間的平均[1 ,2,3,5,11] =(1 + 11)/ 2 = 6如何通過範圍10來計算數組的平均值?

[12,13,15,22] =(12 + 22)/ 2 = 17

[25,27 ,30] =(25 + 30)/ 2 = 27

這裏是我的代碼

def par(s): 

    g = [] 
    i = 0 
    while i <= len(s): 
     y =s[i] + 10 

     n = (s[i]+y)/2 
     g.append(n) 

     for x in s: 
      if y <= x: 
       i = s.index(x) 
       break 

    return g 
+0

該代碼的問題是? – 2015-02-10 15:50:47

+3

第一:我不清楚你想要這個功能做什麼。第二:你的代碼有什麼問題?第三:你的代碼不是獨立的。最後一個可能是挑剔的,但它增加了實際嘗試你的代碼的可能性,因爲他只能將它複製並粘貼到Python解釋器中。 – filmor 2015-02-10 15:51:53

+0

該函數應該將數字分組的範圍爲10,並作出平均 – mike10101 2015-02-10 15:58:52

回答

4
data = [1,2,3,5,11,12,13,15,22,25,27,30] 

# divide it into blocks like [[a .. a+10], [b .. b+10], ...] 
result = [] 
block = None 
for d in data: 
    if block: 
     if d <= hi: 
      # belongs to current block 
      block.append(d) 
     else: 
      # start a new block 
      result.append(block) # finish previous block 
      block = [d]   # start new block 
      lo, hi = d, d + 10 # reset endpoints for new block 
    else: 
     # special handling for first value encountered 
     block = [d] 
     lo, hi = d, d + 10 
# cleanup 
if block: 
    result.append(block) 

# result = [[1, 2, 3, 5, 11], [12, 13, 15, 22], [25, 27, 30]] 

# find midpoint for each block 
mid_points = [(block[0] + block[-1]) // 2 for block in result] 

# mid_points = [6, 17, 27] 
+0

這個答案值得贊同第一條評論線:#將它分成[[a .. a + 10],[b .. b + 10],...]等塊。我不知道「範圍10」是什麼意思,直到我讀到這個答案! – 2015-02-10 16:34:26

+0

這正是我想要的謝謝!對不起,我非常糟糕的解釋 – mike10101 2015-02-10 16:43:43