我希望得到一行结果。我不需要新的尺寸

时间:2016-10-04 05:51:33

标签: j

   (1:)`(3:)@.(1&=)"0 i.2
1 3
   (1:,2:)`(3:)@.(1&=)"0 i.2
1 2
3 0

我想要

1 2 3

没有新的尺寸。没有零。

2 个答案:

答案 0 :(得分:1)

(1:)(1:,2:)之间的形状发生了显着变化。

   $ 1: 'a'

   $ 1 $ 1: 'a'
1
   $ (1:,2:) 'a'
2
   (1&$ 1:)`(1&$ 3:)@.(1&=)"0 i.2
1
3

这可能是一种更好的方法,但按照我的思维方式,你会生成不等长的数组,应该装箱,然后你想把它们变成一个列表。

因此:

   ; ((1:,2:)`(3:))@.(1&=)"0&.> i.2
1 2 3

可以对其进行重构和改进:

   ;@:((1:,2:)`(3:)@.(1&=)each) i.2
1 2 3

答案 1 :(得分:0)

您可以使用(1:,2:,3:) 'ignored argument'来形成列表,但这并不能解决您使用@.的原因

如果你想合并不规则形状的结果,Dane关于装箱中间结果然后夷平结果列表的评论是相关的。 (这可能是你想要的,在这里。)