如何用 5 个字符的代码替换 kdb+ 列表中的零?

How to replace zeros in a kdb+ list in 5 characters of code?

我有一个列表如下:

q) v:1 6 0 7 -2 0f

我可以使用条件向量将此列表中的 0 替换为 1:

q) ?[v=0;1;v]

但是,有什么方法可以只用5个字符来执行相同的操作吗?即

q)?[v=0;1;v]~xxxxx
1b

编辑:我把这个问题当作脑筋急转弯。我猜这源于 q 就是用尽可能少的代码获得你想要的结果的想法。所以这没有任何特殊目的,只是为了好玩

您可以使用以下语法执行此操作:

v+0=v

这是谜语吗??在一些非常具体的(人为的)示例中,这些也可以假设 non-floats:

q)v:1 1 0 7 -2 0 8
q)v^v v
1 1 1 7 -2 1 8
q)v|v v
1 1 1 7 -2 1 8

但再次强调,根据 Avons 的解决方案,非常捏造的示例在一般情况下根本不可用。

额外编辑:k 可以用 4 个字符完成一般情况

q)v:1 6 0 7 -2 0f
q)\
  v+~v
1 6 1 7 -2 1f