许多函数式语言都内置了过滤列表中元素的方法.除非我遗漏了某些东西,否则Q似乎没有任何这样的内置方法.这让我感到惊讶,因为过滤器是许多功能语言中的主要高阶函数.
假设我想过滤掉列表中的所有0 1 0 2 3 0 4.过滤后的结果列表应该是1 2 3 4.我目前在Q中完成此操作:
raze{eval(?;(not;(=;x;0));x;())}peach 1 0 2 3 0 4
Run Code Online (Sandbox Code Playgroud)
这给了我需要的结果,但是当确定所发生的一切都是过滤器时,读取有点不方便.
我可以创建自己的过滤器功能,但我想知道是否只有我缺少的东西.是否有一种传统的方法来过滤Q语言中的内置?
except 如果您只考虑列表,那么应该是您要查找的关键字.
来自http://code.kx.com/q/ref/select/#except:
返回列表x中不是(项目)列表或原子y的所有项目.
q)1 0 2 3 0 4 except 0
1 2 3 4
Run Code Online (Sandbox Code Playgroud)