gpt4 book ai didi

python - 过滤列表。仅在项目之间有一定距离的情况下获取列表元素?

转载 作者:太空狗 更新时间:2023-10-30 02:17:36 25 4
gpt4 key购买 nike

我只需要获取那些在某种程度上彼此相距较远的元素/项目。例如,我有一个整数列表:

data = [-2000, 1000, 2000, 3500, 3800, 4500, 4600, 5000, 6000]

假设我只想检索彼此之间距离至少为 1000 的那些元素。从上面的列表中我需要输出:

[-2000, 1000, 2000, 3500, 4500, 6000]

我是这样过滤的:

filtered.append(data[0])
for index, obj in enumerate(data):
if index < (l - 1):
if abs(obj - data[index+1]) > 999:
filtered.append(data[index+1])

print(filtered)

不需要的输出:

[-2000, 1000, 2000, 3500, 6000]

它失败了,因为它比较了两个相邻的列表元素,而不管一些元素应该被过滤掉并且不应该被考虑在内的事实。

让我更清楚地展示。
原始列表:[-2000, 1000, 2000, 3500, 3800, 4500, 4600, 5000, 6000]

过滤过程:

-2000 - OK
1000 - OK
2000 - OK
3500 - OK
3800 - Out
4500 - Should be OK, but it filtered out compared to 3800. But it should be compared to 3500 (not 3800 which is Out).

如何解决?

最佳答案

对数据进行排序,然后与之前的数据进行比较即可:

data = [-2000, 1000, 2000, 3500, 3800, 4500, 4600, 5000, 6000]

lst = [min(data)] # the min of data goes in solution list
for i in sorted(data[1:]):
if i-lst[-1] > 999: # comparing with last element
lst.append(i) # of the solution list

print (lst)

输出:

[-2000, 1000, 2000, 3500, 4500, 6000]

关于python - 过滤列表。仅在项目之间有一定距离的情况下获取列表元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39970857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com