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

时间:2017-05-25 09:54:48

标签: scala for-loop indexof

我在尝试查找此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

3 个答案:

答案 0 :(得分:7)

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生成pair valueindex

答案 1 :(得分:0)

您可以使用范围代替:

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

可以简化,只是一个想法

答案 2 :(得分:0)

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

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

生成当前索引,然后使用indexOf()从当前索引向前搜索将起作用。