如何通过索引从J中的列表中删除元素?

时间:2015-05-21 04:40:12

标签: j

我提出的相当冗长的分支是

Set

如,

({. , (>:@[ }. ]))

效果很好,但有更惯用的方法吗?在J中这样做的常用方法是什么?

2 个答案:

答案 0 :(得分:5)

是的,J-way是使用3级拳击:

(<<<5) { i.10
0 1 2 3 4 6 7 8 9

(<<<1 3) { i.10
0 2 4 5 6 7 8 9

这是dictionary for {中的一个小注释:

  

请注意,最后一个二元示例中的结果,即(&lt;&lt;&lt;&lt;&lt;&lt;&lt; _1){m,除最后一项外都是。

以及Learning J: Chapter 6 - Indexing: 6.2.5 Excluding Things中的更多内容。

答案 1 :(得分:4)

另一种方法是使用#(Tally和Copy)的monadic和二元形式。这种使用Copy来删除项目的习惯用法是我经常使用的。

钩子(i. i.@#)使用Tally(monadic#)和monadic和dadadic i.(整数和索引)来生成过滤字符串:

   2 (i. i.@#) 'abcde'
1 1 0 1 1

Copy(dyadic#)用于省略相应的项目。

   2 ((i. i.@#) # ]) 0 1 2 3 4 5
0 1 3 4 5
   2 ((i. i.@#) # ]) 'abcde'
abde