2024-10-02 08:27:35 发布
网友
假设我已经定义了函数:
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方式来做?你知道吗
如果定义了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]]
如果定义了window函数,则可以执行以下操作:
因为它完全是迭代器,所以对于大型列表可能使用较少的内存。你知道吗
使用切片创建三个移位列表,然后^{} 将它们放在一起:
相关问题 更多 >
编程相关推荐