例如,我有这个列表:
test:(8;12;15;19;10)
如何选择元素 2 到 4?
当我尝试list[2;4]
时,它对我不起作用。
索引列表是迄今为止最快的方法。
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
您可以为此使用子列表
test:(8;12;15;19;10);
2 3 sublist test
这将从索引 2 开始的列表中返回三个元素。
正如 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