三参数滤波

2024-10-02 08:27:35 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我已经定义了函数:

def threeArgs(x,y,z):
  return ... # Returns True or False

我还有一个元素列表:

a = [elem1, elem2, ..., elemN]

我想构造另一个列表b,其中包含第一个和最后一个元素表单list a以及介于两者之间的元素Xn,其中三个参数(Xn-1,Xn,Xn+1)返回true。你知道吗

如何以优雅的Python方式来做?你知道吗


Tags: or函数falsetrue元素列表return定义
2条回答

如果定义了window函数,则可以执行以下操作:

a[0] + [a[i+3] for i,v in enumerate(imap(threeArgs, window(a, 3))) if v] + a[-1]

因为它完全是迭代器,所以对于大型列表可能使用较少的内存。你知道吗

使用切片创建三个移位列表,然后^{}将它们放在一起:

[a[0]] + [y for x, y, z in zip(a, a[1:], a[2:]) if threeArgs(x, y, z)] + [a[-1]]

相关问题 更多 >

    热门问题