假设我有一个盒装数组,例如;
\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x821\xe2\x94\x822\xe2\x94\x823\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x98\nRun Code Online (Sandbox Code Playgroud)\n如何将其转换为普通数组,例如1 2 3?
您的示例不够清晰,无法准确指定高维数组上所需的行为。因此,将有两种解决方案,这是这种情况下最常见的行为。
第一个解决方案是使用内置的一元动词raze ;,这样
]a=.<"(0) 1+i.3
+-+-+-+
|1|2|3|
+-+-+-+
;a
1 2 3
Run Code Online (Sandbox Code Playgroud)
非常简单。但是,应该注意的是 raze 有rank _,并且它总是会生成一个列表,也就是说,它也会展平你的数组:
]a=.<"(0) 1+i.2 3
+-+-+-+
|1|2|3|
+-+-+-+
|4|5|6|
+-+-+-+
;a
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
如果您不想要这种行为,您可以随时使用排名连词":
;"1 a
1 2 3
4 5 6
Run Code Online (Sandbox Code Playgroud)
或者,您可能还想保留数组的原始形状,在这种情况下,一元动词open >可能就是您想要的:
]a=.<"(0) 1+i.3
+-+-+-+
|1|2|3|
+-+-+-+
>a
1 2 3
]a=.<"(0) 1+i.2 3
+-+-+-+
|1|2|3|
+-+-+-+
|4|5|6|
+-+-+-+
>a
1 2 3
4 5 6
Run Code Online (Sandbox Code Playgroud)
最后,您应该知道没有必要创建未装箱值的数组来对其进行操作,因为创建此数组可能会导致不需要的行为(尤其是使用填充时):
]a=.1 2;3 4 5
+---+-----+
|1 2|3 4 5|
+---+-----+
>a
1 2 0
3 4 5
Run Code Online (Sandbox Code Playgroud)
假设我想添加1到 的框中的每个原子a。打开a是不行的,因为这会创建0填充所需的附加元素,如果我之后重新装箱列表,该元素不会被删除
<"1>a
+-----+-----+
|1 2 0|3 4 5|
+-----+-----+
a -: <"1>a
0
Run Code Online (Sandbox Code Playgroud)
相反,我可以修改我的动词“add 1”以在盒子上工作,并使用(双)下的连词 &.
a=.1 2;3 4 5
1&+&.>a
+---+-----+
|2 3|4 5 6|
+---+-----+
Run Code Online (Sandbox Code Playgroud)
请注意,没有额外的填充!
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |