KDB Q中过滤函数最简单的实现是什么?

Rob*_*Rob 1 kdb

许多函数式语言都内置了过滤列表中元素的方法.除非我遗漏了某些东西,否则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语言中的内置?

Jem*_*and 5

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)