将盒装数组转换为普通数组?

M4X*_*4X_ 2 j

假设我有一个盒装数组,例如;

\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\n
Run Code Online (Sandbox Code Playgroud)\n

如何将其转换为普通数组,例如1 2 3

\n

Bla*_*ans 6

您的示例不够清晰,无法准确指定高维数组上所需的行为。因此,将有两种解决方案,这是这种情况下最常见的行为。

第一个解决方案是使用内置的一元动词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)

请注意,没有额外的填充!