根据布尔列表中的值合并 2 个列表

Che*_*vas 0 kdb

我有一种实现此目标的方法,这也解释了我的问题。

a:1 2 3 4;
b:5 6 7;
cond:1101001b;
comb:(count cond) # 0N;
comb[where cond]:a;
comb[where not cond]:b
Run Code Online (Sandbox Code Playgroud)

但是 q 有很多用于操作列表的实用程序,我想知道是否有更直接的方法来做到这一点。

SJT*_*SJT 6

rank就是你所需要的。

q)comb
1 2 5 3 6 7 4
q)(b,a)rank cond
1 2 5 3 6 7 4
Run Code Online (Sandbox Code Playgroud)