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
生成 value
和 index
的 pair
。
您可以使用范围来迭代:
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() 从当前索引向前搜索即可。
我在这个 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
生成 value
和 index
的 pair
。
您可以使用范围来迭代:
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() 从当前索引向前搜索即可。