假设我可以放心,我有一个包含偶数个元素的列表,例如
val items = List(1,2,3,4,5,6)
我知道我可以写一个列表理解,一次只取一个元素:
for (item <- items) println(item)
但是,有什么方法可以使用理解来一次处理2个或更多元素吗?
for ((first, second) <- items) println (first + second)
答案 0 :(得分:11)
还要考虑使用zip
,就像这样,
for ( (f,s) <- items zip items.drop(1) ) println (s"f: $f, s: $s")
f: 1, s: 2
f: 2, s: 3
f: 3, s: 4
f: 4, s: 5
f: 5, s: 6
或者每第三个元素
for ( (f,t) <- items zip items.drop(3) ) println (s"f: $f, t: $t")
f: 1, t: 4
f: 2, t: 5
f: 3, t: 6
答案 1 :(得分:8)
这是:
scala> val items = 1 to 6 toList
items: List[Int] = List(1, 2, 3, 4, 5, 6)
scala> for(List(first, second) <- items.grouped(2)) println(s"first: $first, second: $second")
first: 1, second: 2
first: 3, second: 4
first: 5, second: 6