【问题标题】:Scala remove elements from list of tuplesScala 从元组列表中删除元素
【发布时间】:2013-02-06 16:40:05
【问题描述】:

我是 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;
    }
}

但是对于scala来说感觉很长..有没有更短的方法?

【问题讨论】:

    标签: list scala


    【解决方案1】:

    类似于 twillouer 和 tzofia 的解决方案,但具有模式匹配:

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

    【讨论】:

      【解决方案2】:

      你可以这样做:

      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))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-30
          • 1970-01-01
          • 2014-09-30
          • 2020-09-27
          • 2015-09-14
          • 1970-01-01
          相关资源
          最近更新 更多