Scala从元组列表中删除元素

时间:2013-02-06 16:40:06

标签: list scala

我是scala的新手,我正试图从元组元素列表中删除它们的第一个值大于第二个值。

例如,从列表中:

val list =  List[(Int,Int)]((1,3),(3,1),(2,2)) 

我想获得列表:

val list =  List[(Int,Int)]((1,3),(2,2)) 

所以我使用了以下几行:

var newList = List[(Int, Int)]()
for (element <- list) {
    if (element._1 <= element._2) {
        newList ::= element;
    }
}

但是斯卡拉感觉很长..是否有更短的路?

3 个答案:

答案 0 :(得分:9)

喜欢twillouer和tzofia的解决方案,但有模式匹配:

list filter { case (a, b) => a <= b }

答案 1 :(得分:6)

您可以这样做:

list.filter(element => element._1 <= element._2)

过滤器函数过滤掉不满足给定布尔条件的元素。

答案 2 :(得分:3)

你可以使用这样的过滤器:

scala> val list =  List[(Int,Int)]((1,3),(3,1),(2,2)) 
list: List[(Int, Int)] = List((1,3), (3,1), (2,2))

scala>  val newList = list.filter(a => a._1 <= a._2)
newList: List[(Int, Int)] = List((1,3), (2,2))

或filterNot示例:

scala> val newList = list.filterNot(a => a._1 > a._2)
newList: List[(Int, Int)] = List((1,3), (2,2))