如何将此循环(使用Java)转换为Scala?
for(int i = 0, j = 0; i < 10; i++, j++) {
//Other code
}
我的最终目标是同时循环浏览两个列表。 我想在迭代中的每个索引处同时获取这两个元素。
for(a <- list1, b <- list2) // doesn't work
for(a <- list1; b <- list2) // Gives me the cross product
答案 0 :(得分:7)
使用.zip()
制作元组列表并迭代它。
val a = Seq(1,2,3)
val b = Seq(4,5,6)
for ((i, j) <- a.zip(b)) {
println(s"$i $j")
}
// It prints out:
// 1 4
// 2 5
// 3 6
答案 1 :(得分:0)
如果要遍历多个列表,只需在列表的元组上使用.zipped
。
val l1 = List(1, 2, 3)
val l2 = List(4, 5, 6)
val l3 = List("a", "b", "c")
for ((c1, c2, c3) <- (l1, l2, l3).zipped) {
println(s"$c1, $c2, $c3")
}
//Prints
1, 4, a
2, 5, b
3, 6, c