我是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;
}
}
但是斯卡拉感觉很长..是否有更短的路?
答案 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))