2012-12-25 33 views
2

我在scala中新增了所以請儘量詳細說明。scala通過從元組中刪除n元素創建新列表

我有一個列表,例如:

val trioElmList = List((10,20,30),(50,89,90),(60,40,65)) 

我怎樣才能獲得與每個元組的中間元素的新列表中省略?結果應該是:

newList : List[(Int, Int)] = List((10,30), (50,90), (60,65)) 
+1

如果要變換序列中的每個元素,第一個選項始終是'map'。 – dmitry

回答

9

可以使用map方法將函數應用於列表的每個元素,並使用該函數的返回值創建一個新列表。在函數中,您使用模式匹配來獲取元組元素,並返回僅包含第一個元素和最後一個元素的元組。

trioElmList.map { case (x,y,z) => (x,z) } 
-2

沒有任何case需要,如果你的List適當地輸入。

val l: List[Tuple3[_, _, _]] = List((1,2,3), (2,3,4), (3,4,5)) 
l map (e => (e._1, e._3)) 
+0

試圖去操縱一個靜態類型的東西,是不好的?如果你們中的任何一個人都不會解釋爲什麼,我也會冷靜下來。 – idonnie

+0

非常感謝! – igx

+2

對元組參數類型使用通配符完全沒有必要,並且遇到麻煩。這不能幫助列表正確輸入 - 事實上,它確保它不會! (當它們應該是'(Int,Int)'時,得到的列表是用'(Any,Any)'元組來輸入的。 –