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

How to remove an element from a list in J by index?

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

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

例如,

3 ({. , (>:@[ }. ])) 0 1 2 3 4 5
0 1 2 4 5

效果很好,但有没有更惯用的方法?在 J 中执行此操作的常用方法是什么?

对,J路就是用三级拳:

(<<<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 {中的一个小笔记:

Note that the result in the very last dyadic example, that is, (<<<_1){m , is all except the last item.

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

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

hook(i. i.@#)使用Tally(monadic#)和monadic and dyadici.(Integers and Index of)来生成过滤字符串:

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

复制(二元#)用于省略适当的项目。

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