kdb - KDB Q 中过滤器功能的最简单实现是什么?
问题描述
许多函数式语言都内置了过滤列表中元素的方法。除非我遗漏了什么,否则 Q 似乎没有任何此类内置方法。这让我感到惊讶,因为过滤器是许多函数式语言中的主要高阶函数。
假设我想过滤掉列表 1 0 2 3 0 4 中的所有 0。过滤后的结果列表应该是 1 2 3 4。我目前在 Q 中通过以下方式完成此操作:
raze{eval(?;(not;(=;x;0));x;())}peach 1 0 2 3 0 4
这给了我我需要的结果,但是在确定所有正在发生的事情是一个过滤器时阅读起来有点不方便。
我可以从中创建自己的过滤器功能,但我想知道是否缺少一些东西。有没有一种传统的方法来过滤 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
推荐阅读
- django-rest-framework - 如何在 drf-aysg swagger web UI 中显示棉花糖 sheme 作为 request_body 的示例
- elasticsearch - 通过 Elasticsearch 中的索引位置获取文档
- reactjs - 鸽子地图标记问题
- angular - 即使连接到数据源,如何强制分页器长度?
- javascript - 我们可以在多个数组上使用一个 Array.filter() 方法吗?
- c# - 使用 NUnit 对 DateTime 控制器进行单元测试
- java - Spring数据jpa和具有某种关系的实体
- python - While 循环忽略循环外的变量,这会在明确定义时导致未定义的错误
- reactjs - 图标应该有 `type` 属性或 `component` 属性或 `children`?
- jquery - 当我使用 jquery 选择另一个选择框的空值时,如何重置选择框?