Scala从元组列表中删除元素

4
我是一位新手,正在尝试从元组列表中删除第一个值大于第二个值的元素。
例如,从以下列表中:
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;
    }
}

但是对于Scala来说,这样感觉很冗长。有没有更简洁的方法?

3个回答

10

像 twillouer 和 tzofia 的解决方案一样,但使用模式匹配:

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

6
你可以简单地执行以下操作:
list.filter(element => element._1 <= element._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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接