gpt4 book ai didi

list - Scala - 以交替方式组合两个列表

转载 作者:行者123 更新时间:2023-12-04 00:27:33 27 4
gpt4 key购买 nike

我如何合并 2 个列表,使得结果列表在 Scala 中以交替方式包含 2 个列表的元素。

输入:

val list1 = List("Mary", "a", "lamb")

val list2 = List("had", "little")

输出:
List("Mary", "had", "a", "little", "lamb")

最佳答案

您要查找的内容通常称为“散布”或“插入”,有几种方法可以做到:

def intersperse[A](a : List[A], b : List[A]): List[A] = a match {
case first :: rest => first :: intersperse(b, rest)
case _ => b
}

您也可以使用 scalaz
import scalaz._
import Scalaz._

val lst1 = ...
val lst2 = ...

lst1 intercalate lst2

编辑 :您还可以执行以下操作:
lst1.zipAll(lst2,"","") flatMap { case (a, b) => Seq(a, b) }

想想看,我相信最后一个解决方案是我最喜欢的,因为它最简洁,同时仍然清晰。如果您已经在使用 Scalaz,我会使用第二种解决方案。然而,第一个也非常可读。

为了使这个答案更完整,添加@Travis Brown 的通用解决方案:
list1.map(List(_)).zipAll(list2.map(List(_)), Nil, Nil).flatMap(Function.tupled(_ ::: _))

关于list - Scala - 以交替方式组合两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19810938/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com