如何在KDB/Q列表中的其他元素之间插入元素

如何在KDB/Q列表中的其他元素之间插入元素,kdb,q-lang,Kdb,Q Lang,假设我有一个列表(1 3 4),在1之后,我想插入另一个元素2,结果是(1 2 3 4) 如何以一种通用的方式有效地实现这一点?我认为您需要更具体地说明您想要什么,但现在这里有一个如何实现的示例 q)list:1 3 4 q)list 1 3 4 q)list: asc list,:2 q)list `s#1 2 3 4 或者另一种方法是,假设您知道要将元素添加到列表中的索引,在本例中是索引1,那么您可以创建如下函数: q)add:{[lst;ele;ind] (ind#lst),ele,(i

假设我有一个列表
(1 3 4)
,在
1
之后,我想插入另一个元素
2
,结果是
(1 2 3 4)


如何以一种通用的方式有效地实现这一点?

我认为您需要更具体地说明您想要什么,但现在这里有一个如何实现的示例

q)list:1 3 4
q)list
1 3 4
q)list: asc list,:2
q)list
`s#1 2 3 4
或者另一种方法是,假设您知道要将元素添加到列表中的索引,在本例中是索引1,那么您可以创建如下函数:

q)add:{[lst;ele;ind] (ind#lst),ele,(ind _ lst)}
q)list:1 3 4
q)add[list;2;1]
1 2 3 4

一种允许同时进行多个插入的替代方法

如果索引要为原始列表编制索引:

q){raze cut[(0,z);x],'(y,enlist ())}[til 10;999 998 994;2 4 8]
0 1 999 2 3 998 4 5 6 7 994 8 9
如果索引要索引列表的连续迭代:

q){raze cut[(0,z);x],'(y,enlist ())}/[til 10;999 998 994;2 4 8]
0 1 999 2 998 3 4 5 994 6 7 8 9