You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KDB中如何对两个列表的对应元素应用二元dyadic函数

KDB 逐位应用二元函数到两个列表的实现方法

问题场景

你有一个二元函数f[x;y],以及两个列表:

l1: a1 a2 a3 ...
l2: b1 b2 b3 ...

需要得到逐位调用函数的结果列表:

f[a1;b1] f[a2;b2] f[a3;b3] ...

最优解法

直接使用KDB内置的*each-both(逐对应用)*副词,将单引号'放在二元函数后即可:

f'[l1;l2]

可运行示例

基础运算示例

以加法运算为例:

q) l1:1 2 3
q) l2:4 5 6
q) +'[l1;l2]
5 7 9

输出结果对应1+4、2+5、3+6的计算结果。

自定义函数示例

自定义二元函数也可以直接使用该语法:

// 定义二元函数:返回x乘以(y+1)的结果
q) f:{x*y+1}
q) f'[l1;l2]
5 12 21

输出结果对应1*(4+1)、2*(5+1)、3*(6+1)的计算结果。

注意:两个输入列表需要长度一致,否则结果会按较短列表的长度截断,部分场景下会抛出长度不匹配错误。

其他可选写法(不推荐)

你也可以先将两个列表逐位打包再遍历处理,性能低于内置的'副词,写法更繁琐:

f each l1,'l2

内容的提问来源于stack exchange,提问作者Xiaohuolong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:24:02