打印差异大于值的列表元素

时间:2018-11-05 02:27:10

标签: python arrays python-3.x list

我有一个Python列表。

x = [230, 235, 300, 480, 480, 506, 515, 516]

我想打印一个数组,其中包含数组x中的元素,其差值大于一个值(假设为10)。因此,新列表将仅包含与下一个元素相差大于10的元素。输出列表应包含与给定列表中的相邻元素相差超过10的元素。 输出应为[230、300、480、516]的列表

我想创建一个函数使之成为可能。

b = [0] + x
t = []
for i in range(len(b)-1):
    if(b[i+1]-b[i]>10):
        t.append(b[i])

print(t)

我尝试过了。但是我没有得到正确的输出。

4 个答案:

答案 0 :(得分:1)

使用controllerName/actionName?Area=MyAreaName

numpy

产生:

import numpy as np
xarr = np.array(x)
result = xarr[np.where(np.diff(xarr) > 10)[0]+1]

我相信这可能是您想要的吗?

答案 1 :(得分:1)

您可以尝试以下操作:

a=[230,235,300,480,480,506,515,516]
b=[0]+a
c=[]
for i in range(0,len(b)-1):
        if((b[i+1]-b[i])>10):
                c.append(b[i+1])
print(c)

输出:

[230, 300, 480, 506]

答案 2 :(得分:0)

尝试一下:

print([k for k,v in zip(x, x[1:]) if abs(k-v) > 10])

zip是你的朋友。

注意:即使列表具有上下值(意味着有时数字较大,有时较小)也可以使用,因为我使用abs

更新

l=[(k,v) for k,v in zip(x[1:], x) if abs(k-v) >= 10]
print([list(zip(*l))[1][0]]+list(list(zip(*l))[0]))

努力获得想要的输出,现在是您的朋友。

答案 3 :(得分:0)

使用迭代器:

import itertools
def gapFilter(l, gap_value):
  it1, it2 = itertools.tee(l)
  next(it2)
  return [x for x, y in zip(it1, it2) if abs(x-y) >= gap_value]

这里有live example

要获取初始0,只需在计算前将其附加到列表中即可。 Python3示例:

gapFilter([0, *x], 10)