35

ScalaリストList(1,2,3,4)をペアに分割しようとし(1,2) (2,3) (3,4)ていますが、これを行う簡単な方法は何ですか?

4

3 に答える 3

80
val xs = List(1,2,3,4)
xs zip xs.tail
  // res1: List[(Int, Int)] = List((1,2), (2,3), (3,4))

ドキュメントが言うように、zip

対応する要素をペアで結合することにより、このリストと別の反復可能なコレクションから形成されたリストを返します。2 つのコレクションの一方が他方より長い場合、残りの要素は無視されます。

そのため、最初のものの最後はList('a,'b,'c,'d)無視されます。List('x,'y,'z)List(('a,'x), ('b,'y), ('c,'z))'d

あなたの例から、tailList(1,2,3,4)List(2,3,4)、これらがペアでどのように圧縮されるかを確認できるようにするためです。

于 2012-06-28T16:45:45.143 に答える
16

ペア(つまりタプル)のリストを作成するには、これを試してください

List(1,2,3,4,5).sliding(2).collect{case List(a,b) => (a,b)}.toList
于 2012-06-28T16:34:59.613 に答える
9
List(1,2,3,4).sliding(2).map(x => (x.head, x.tail.head)).toList
res0: List[(Int, Int)] = List((1,2), (2,3), (3,4))
于 2012-06-28T17:01:33.443 に答える