2015-02-10 98 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