【问题标题】:scala filter a list of lists of tuplesscala过滤元组列表的列表
【发布时间】:2016-11-15 03:12:33
【问题描述】:

我有一个包含元组 (char, Int) 之类的列表

val raw = List(List((a,0), (b,0)), List((a,1), (b,0)), List((a,2), (b,0)), List((a,0), (b,1)), List((a,1), (b,1)), List((a,2), (b,1)), List((a,0), (b,2)), List((a,1), (b,2)), List((a,2), (b,2)))`

我想过滤掉所有 Int 为 0 的元组。所以结果应该是:

List(List(), List((a,1)), List((a,2)), List((b,1)), List((a,1), (b,1)), List((a,2), (b,1)), List((b,2)), List((a,1), (b,2)), List((a,2), (b,2)))

我尝试做一个映射,然后做一个过滤器,但编译器抱怨 incompatible types: ((Int, Char) => Boolean expected but found ((Int, Char) => Unit)

raw.map(_.filter(tuple => match {
  (_,0) => false
  (_,_) => true
})

我是不是错了

【问题讨论】:

    标签: list scala filter


    【解决方案1】:

    这和你尝试的很接近:

    raw.map(_.filter({
      case (_,0) => false
      case (_,_) => true
    }))
    

    【讨论】:

      【解决方案2】:

      这是正确的:

      raw.map(_.filter(_._2 != 0))
      

      【讨论】:

      • 感谢 经常使用 scala:更少的代码最好的结果。
      猜你喜欢
      • 2011-05-27
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      相关资源
      最近更新 更多