【问题标题】:Scala List of tuples to flat listScala 元组列表到平面列表
【发布时间】:2014-11-21 18:30:05
【问题描述】:

我有一个元组对列表List[(String,String)],并希望将其展平为一个字符串列表List[String]

【问题讨论】:

  • 如何从两个字符串变成一个字符串?我们不知道你想如何组合它们。
  • 那些尖括号不是很好......
  • 好吧,你有一个包含 2 个字符串的元组,即 并经过一些扁平化....一个 List...."John", "Paul"
  • List[(String, String)] 表示包含字符串的元组列表。

标签: scala


【解决方案1】:

一些选项可能是: 连接:

list.map(t => t._1 + t._2)

一个接一个地交错(在您发表评论之后,您似乎在要求这个):

list.flatMap(t => List(t._1, t._2))

拆分并附加它们:

list.map(_._1) ++ list.map(_._2)

【讨论】:

  • 请记住,第三个选项效率很低:它遍历同一个列表两次,而不是将一个列表附加到另一个列表,这具有线性复杂性。
【解决方案2】:

好吧,你总是可以像这样使用 flatMap:

list flatMap (x => List(x._1, x._2))

虽然你的问题有点含糊。

【讨论】:

    【解决方案3】:

    试试:

    val tt = List(("John","Paul"),("George","Ringo"))
    tt.flatMap{ case (a,b) => List(a,b) }
    

    这会导致:

    列表(约翰、保罗、乔治、林戈)

    【讨论】:

      【解决方案4】:

      一般而言,对于任何元组的列表,请考虑这一点,

      myTuplesList.map(_.productIterator.map(_.toString)).flatten
      

      注意productIterator 将元组中的所有类型转换为Any,因此我们将此处的值重新转换为String

      【讨论】:

        【解决方案5】:

        见-

        https://stackoverflow.com/a/43716004/4610065

        在这种情况下-

        import syntax.std.tuple._
        List(("John","Paul"),("George","Ringo")).flatMap(_.toList)
        

        【讨论】:

          猜你喜欢
          • 2016-09-06
          • 2012-07-06
          • 2013-11-06
          • 1970-01-01
          • 2015-02-13
          • 2016-11-15
          • 2023-03-19
          • 2018-02-11
          • 2016-10-08
          相关资源
          最近更新 更多