找到一个函数,找出列表中相邻值之间的差异,然后根据阈值进行测试

时间:2013-10-31 17:12:10

标签: python for-loop python-3.x average

所以基本上我需要一个函数来计算列表中每个值之间的差异,然后根据阈值进行测试。如果两个相邻数字之间的差异大于给定阈值,则应将两个数字之间的平均值顺序插入列表中。如果差异不大于它应该返回原始列表。最多只能插入一个数字。

我有

def test(list, Threshold):

for i in range(len(list)): 

         if abs((list[i] - list[i+1])) > Threshold : 
               ((list[i] + list[i+1])/2) 
               (list.append((list[i] + list[i+1])/2)) 
               ( list.sort()) 
         else: 
               ( list) 

Z = [1,2,4,4.5] 

test(Z,1.5) 

Z = [1,2,3.0,4,4.5]

这是唯一有效的方案。如果没有超过阈值或者如果有两个超过阈值则不起作用。我知道我正朝着正确的方向前进

1 个答案:

答案 0 :(得分:2)

添加新号码时只需break。以下是您的功能的编辑版本。另请注意,我已调整for循环的范围以防止索引错误。在比较list[i]list[i+1]时,i+1不能大于列表大小,因此i必须停在len(list)-1

def test(list, Threshold):

    for i in range(len(list)-1):    # <-- note the change in limit

        if abs(list[i] - list[i+1]) > Threshold:
            list.append((list[i] + list[i+1])/2) 
            list.sort()
            break    # this will stop the loop

测试

z = [1,2,4,4.5]
test(z,1.5)
z
[1, 2, 3, 4, 4.5]