因此,基本上我需要一个函数来计算列表中每个值之间的差,然后针对阈值进行测试。如果两个相邻数字之间的差大于给定阈值,则应将两个数字之间的平均值顺序插入到列表中。如果差异不大,则应返回原始列表。最多只能插入一个数字。
我有
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]
这是唯一可行的方案。如果没有一个超过阈值或超过两个倍数,则不起作用。我知道我朝着正确的方向前进
最佳答案
附加新号码时只需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]
关于python - 查找一个函数,该函数查找列表中相邻值之间的差,然后针对阈值进行测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19712748/