Đưa ra Danh sách Scala sau:
val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3"))
Làm thế nào tôi có thể nhận được:
List(("a1", "a2", "a3"), ("b1", "b2", "b3"), ("c1", "c2", "c3"))
Vì zip chỉ có thể được sử dụng để kết hợp hai Danh sách, tôi nghĩ bạn sẽ cần phải lặp lại / giảm Danh sách chính bằng cách nào đó. Không ngạc nhiên, những điều sau đây không hoạt động:
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)
Bất kỳ đề xuất một cách làm điều này? Tôi nghĩ rằng tôi đang thiếu một cách rất đơn giản để làm điều đó.
Cập nhật: Tôi đang tìm một giải pháp có thể lấy Danh sách N Danh sách với M phần tử mỗi phần và tạo Danh sách M TupleN.
Cập nhật 2: Hóa ra là trường hợp sử dụng cụ thể của tôi tốt hơn nên có một danh sách các danh sách, thay vì một danh sách các bộ giá trị, vì vậy tôi chấp nhận phản hồi của Pumpkin. Nó cũng là đơn giản nhất, vì nó sử dụng một phương thức gốc.