Scala - 查找列表当前元素的确切索引

Scala - Find the exact index of the current element of a List

我在这个 for 循环中尝试找出 10(最后一个元素)的索引时遇到问题

例如

val l: List[Int] = List(10, 1, 4, 5, 6, 10)
for(i <- l)
{
   println(i + " " + l.indexOf(i))
}

输出是

10 0
1 1
4 2
5 3
6 4
10 0

最后一行如何得到10 5

List(10, 1, 4, 5, 6, 10).zipWithIndex.foreach{ case(a, b) => println(a + " " + b)}
> 10 0
  1 1
  4 2
  5 3
  6 4
  10 5

您可以使用 zipWithIndex 生成 valueindexpair

您可以使用范围来迭代:

let tempL = l;
let el;
for (i <- 0 until l.length) {
    el = tempL.head;
    prinln(i + " " + el);
    tempL = tempL.tail
}

大概可以简化,只是一个想法

val l: List[Int] = List(10, 1, 4, 5, 6, 10)

for((v, i) <- l.zipWithIndex) {
  println(v + " " + l.indexOf(v, i))
}

生成当前索引,然后使用 indexOf() 从当前索引向前搜索即可。