รับรายการ 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 สามารถใช้เพื่อรวมสองรายการเท่านั้นฉันคิดว่าคุณจะต้องวนซ้ำ / ลดรายการหลักอย่างใด ไม่น่าแปลกใจที่สิ่งต่อไปนี้ใช้ไม่ได้:
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)
มีข้อเสนอแนะวิธีการทำอย่างไร ฉันคิดว่าฉันกำลังพลาดวิธีง่ายๆในการทำ
อัปเดต:ฉันกำลังมองหาโซลูชันที่สามารถใช้ List of N Lists ที่มีองค์ประกอบ M และสร้าง List of M TupleNs
อัปเดต 2:ตามที่ปรากฏจะดีกว่าสำหรับกรณีการใช้งานเฉพาะของฉันที่จะมีรายการรายการแทนที่จะเป็นรายการสิ่งที่เพิ่มขึ้นดังนั้นฉันจึงยอมรับคำตอบของฟักทอง นอกจากนี้ยังเป็นวิธีที่ง่ายที่สุดเนื่องจากใช้วิธีดั้งเดิม