2013-05-17 53 views
5

的名單上有3所列出像斯卡拉,轉換多個名單,元組

val a = List("a", "b", "c") 
val b = List(1, 2, 3) 
val c = List(4, 5, 6) 

我想將它們轉換如下

List(("a", 1, 4), ("b", 2, 5), ("c", 3, 6)) 

請讓我知道如何得到這樣的結果

回答

10

應該很容易實現:

(a zip b) zip c map { 
    case ((x, y), z) => (x, y, z) 
}; 
+6

或'(a,b,c).zipped.toList' –

+0

謝謝alex23和Myserious Dan。這是工作。現在看起來很容易解決。 – Srinivas

6

用途:

(a zip b) zip c map { case ((av,bv),cv) => (av,bv,cv) } 

注:這笑rtens最短的結果列表a,b,c。如果您希望將結果列表填入默認值,請使用zipAll

12

如果您有需要拉上在一起的兩個或三個列表,你可以使用拉鍊

val a = List("a", "b", "c") 
val b = List(1, 2, 3) 
val c = List(4, 5, 6) 

(a,b,c).zipped.toList 

這導致:List((a,1,4), (b,2,5), (c,3,6))