如何在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