首页 > 解决方案 > 如何获取scala列表中重复对的索引

问题描述

我有一个像下面这样的 scala 列表:

slist = List("a","b","c","a","d","c","a")

我想在这个列表中获取相同元素对的索引。例如,这个 slist 的结果是

(0,3),(0,6),(3,6),(2,5)

其中 (0,3) 表示slist(0)==slist(3) (0,6) 表示slist(0)==slist(6) 等等。

那么在scala中有什么方法可以做到这一点吗?非常感谢

标签: scala

解决方案


 val v = slist.toVector; val s = v.size
 for(i<-0 to s-1;j<-0 to s-1;if(i<j && v(i)==v(j))) yield (i,j)

在 Scala REPL 中:

scala> for(i<-0 to s-1;j<-0 to s-1;if(i<j && v(i)==v(j))) yield (i,j)
res34: scala.collection.immutable.IndexedSeq[(Int, Int)] = Vector((0,3), (0,6), (2,5), (3,6))

推荐阅读