Scala列表理解一次采用两个元素

时间:2014-09-10 07:36:36

标签: list scala list-comprehension

假设我可以放心,我有一个包含偶数个元素的列表,例如

val items = List(1,2,3,4,5,6)

我知道我可以写一个列表理解,一次只取一个元素:

for (item <- items) println(item)

但是,有什么方法可以使用理解来一次处理2个或更多元素吗?

for ((first, second) <- items) println (first + second)

2 个答案:

答案 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