我使用Python 3.7。 我有一个像这样的数组:
L1 = [1,2,3,-10,8,12,300,17]
现在我要过滤值(-10和300不合适)
数组中的值可能不同,但总是递增或递减。
Python 3是否具有集成功能?
结果应如下所示:
L1 = [1,2,3,8,12,17]
谢谢!
根据评论进行编辑:
如果每个元素与前一个元素之间只有一定距离(公差:10 f.e.),我想保留每个元素。
答案 0 :(得分:1)
您的数组为a list
。您可以使用built in functions:
L1 = [1,2,3,-10,8,12,300,17]
min_val = min(L1) # -10
max_val = max(L1) # 300
p = list(filter(lambda x: min_val < x < max_val, L1)) # all x not -10 or 300
print(p) # [1, 2, 3, 8, 12, 17]
Doku:
如果要使用增量过滤器,则可以遍历数据点列表并决定是否保留:
delta = 10
result = []
last = L1[0] # first one as last value .. check the remaining list L1[1:]
for elem in L1[1:]:
if last-delta < elem < last+delta:
result.append(last)
last = elem
if elem-delta < result[-1] < elem+delta :
result.append(elem)
print(result) # [1, 2, 3, 8, 12, 17]