我希望在一个与X不同的列表中保留连续的值,假设我有这样的列表:
list = [1, 50, 70, 75, 100, 110] 我想保留一个连续数字,它的差值是>= 20:
A = [1, 50, 70, 100] 要做到这一点,我现在使用以下代码:
distance = 20
A = []
for i in (list):
if not A or (i - A[-1]) >= distance:
A.append(i)还有其他方法可以用迭代工具或更多的迭代工具来实现吗?谢谢!
发布于 2019-11-13 05:36:40
试着:
>>> arr = np.array([1, 50, 70, 75, 100, 110])
>>> mask = np.diff(arr) >= 20
>>> mask = np.insert(mask, 0, True)
>>> arr[mask]
array([ 1, 50, 70, 100])发布于 2019-11-13 05:38:13
对于list l,我们可以-
[l[0]]+[l[i] for i in range(1,len(l)) if l[i]-l[i-1]>=20]对于数组a,它将是-
a[np.r_[True,np.diff(a)>=20]]如果你想把差异看作是绝对的-
a[np.r_[True,np.abs(np.diff(a))>=20]发布于 2019-11-13 06:03:53
具有简单的生成器功能:
def filter_diff(lst):
v = lst[0]
yield v
for n in range(1, len(lst)):
if lst[n] - v >= 20:
v = lst[n]
yield v
lst = [1, 50, 70, 75, 100, 110]
print(list(filter_diff(lst))) # [1, 50, 70, 100]https://stackoverflow.com/questions/58830798
复制相似问题