1. ホーム
  2. scala

[解決済み] Scalaで2つ以上のリストをまとめてzipで圧縮することはできますか?

2023-01-21 21:10:06

質問

次のようなScalaのリストがあります。

val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3"))

どうすれば

List(("a1", "a2", "a3"), ("b1", "b2", "b3"), ("c1", "c2", "c3"))

zip は 2 つのリストを結合するためにのみ使用できるので、何らかの方法でメインのリストを反復/削減する必要があると思います。驚くことではありませんが、以下はうまくいきません。

scala> l reduceLeft ((a, b) => a zip b)
<console>:6: error: type mismatch;
 found   : List[(String, String)]
 required: List[String]
       l reduceLeft ((a, b) => a zip b)

これを行う方法について何か提案はありますか?私はそれを行うための非常に単純な方法を見逃していると思います。

更新しました。 私は、それぞれM個の要素を持つN個のListを受け取り、M個のTupleNsのListを作成することができるソリューションを探しています。

更新2です。 タプルのリストではなくリストのリストを持つことが私の特定のユースケースにとって良いことがわかったので、私はpumpkinの応答を受け入れます。それはまた、ネイティブメソッドを使用するので、最も単純です。

どのように解決するのですか?

任意の大きさのタプルのリストを生成することは不可能だと思いますが 転置関数 は、あなたがリストのリストを得ることを気にしないのであれば、まさに必要なことをやってくれます。