我有一个名为01.in
的文件,位于运行q的同一个文件夹中。它包含一行,其中包含一串数字。例如,我们假设它包含以下字符串:1122
。
我从这个文件中读取数据,将其转换为整数数字列表,并使用以下行将其存储在变量a
中:
a:("i"$read0 `:01.in)-"i"$"0"
现在,如果我尝试使用某些二元内置函数,例如xprev
或rotate
,q解释器将输出任何内容或原始列表。例如:
q)a
1 1 2 2
q)-1 xprev a
q)0 xprev a
1 1 2 2
q)1 xprev a
q)-1 rotate a
1 1 2 2
q)0 rotate a
1 1 2 2
q)1 rotate a
1 1 2 2
如果我直接在列表1 1 2 2
上使用它们,那些相同的功能就会起作用。我试图理解为什么我所做的并不像我预期的那样工作。只是一个抬头:我对q很新,所以如果这是我不知道的明显事件,我会道歉。
答案 0 :(得分:4)
通过阅读文件的方式,您将创建一个嵌套列表:
q)type a
0h
q)0N!a;
,1 1 2 2i
这里我使用0N!
来显示原始结构,,
表示这是一个嵌套列表。相反,尝试阅读这样的内容:
q)a:"I"$'first read0`:01.in
q)a
1 1 2 2i
q)-1 xprev a
1 2 2 0Ni