KDB:如何对2个列表进行减号

时间:2018-10-05 13:17:53

标签: kdb

输入:

a: 1 2 3 4 5 
b: 5 2 6 7

我需要执行什么操作才能删除a中b的所有元素?

预期输出:

1 3 4

3 个答案:

答案 0 :(得分:4)

我认为您要查找的关键字是except,如下所示:

q)c: a except b
q)c
    1 3 4

Except返回其右参数中缺少的所有左参数元素。

答案 1 :(得分:3)

except函数将从一个列表中删除另一个列表中的项目。

q) a except b
1 3 4

希望有帮助。

答案 2 :(得分:1)

关键字except是其他人提到的答案。此外,值得花时间研究except的幕后实际操作,因为这通常有助于更好地了解kdb / q的总体运行方式。检查except可以看到

q)except
k){x@&~x in y}

将kdb / q转换为

q)a where not a in b
1 3 4

同样,您仍然应该使用except,但了解其实现方法很有用