如何获取KDB列表中的元素范围?

时间:2015-02-15 11:54:23

标签: kdb q-lang

例如,我有这个清单:

test:(8;12;15;19;10)

如何选择元素2到4?

当我尝试list[2;4]时,它对我无效。

3 个答案:

答案 0 :(得分:2)

索引列表是迄今为止最快的方式。

q)a
8 1 9 5 4 6 6 1 8 5 4 9 2 7 0 1 9 2 1 8 8 1 7 2 4 5 4 2 7 8 5 6 4 1 3 3 7 8 2..
q)\t do[100000;2 3 sublist a]
109
q)\t do[100000;a 2 3 4]
15

所以只需按照列表中的索引列表即可。顺便说一句,您可以使用til

创建索引
q)til 2
0 1
q)2+til 2
2 3

答案 1 :(得分:1)

您可以使用此

的子列表
test:(8;12;15;19;10);
2 3 sublist test 

这将从索引2开始的列表中返回三个元素。

答案 2 :(得分:0)

正如Manish回答的那样,til是这里最好的选择。您可以使用range定义一个简单的函数til来指定索引范围:

q)test:(8;12;15;19;10)

q)range:{x+til 1+abs[y-x]}   //include the start and end index 
q)test range[2;4] 
15j, 19j, 10j