如何在 Scala 中将列表的每个元素添加到另一个列表的每个元素的末尾?

How to add every element of a list at the end of every element of another list in scala?

我想在另一个列表的每个元素的末尾添加一个列表的元素。

我有:

val Cars_tmp :List[String] = List("Cars|10|Paris|5|Type|New|", "Cars|15|Paris|3|Type|New|")
=> Result : List[String] = List("Cars|10|Paris|5|Type|New|", "Cars|15|Paris|3|Type|New|")

val Values_tmp: List[String] = a.map(r =>  ((r.split("[|]")(1).toInt)/ (r.split("[|]")(3).toInt)).toString ).toList
=> Result : List[String] = List(2, 5)

我想要以下结果(Values_tmp 的第一个元素与 Cars_tmp 的第一个元素连接,Values_tmp 的第二个元素与 [=] 的第二个元素连接27=]...) 如下所示:

 List("Cars|10|Paris|5|Type|New|2", "Cars|15|Paris|3|Type|New|5")

我试过这样做:

Values_tmp.foldLeft( Seq[String](), Cars_tmp) { case ((acc, rest), elmt) => ((rest :+ elmt)::acc) }

我有以下错误:

console>:28: error: type mismatch;
found   : scala.collection.immutable.IndexedSeq[Any]
required: List[String]

谢谢你的帮助。

尽量避免zip,当可迭代对象的大小不同时,它会悄无声息地“失败”。 (在你的代码中,这两个列表的大小似乎很明显,但对于更复杂的代码,这并不明显。)

您可以计算所需的“值”并即时连接它:


val Cars_tmp: List[String] = List("Cars|10|Paris|5|Type|New|", "Cars|15|Paris|3|Type|New|")

def getValue(str: String): String = {
    val Array(_, a, _, b, _, _) = str.split('|')  // Note the single quote for the split. 
    (a.toInt / b.toInt).toString
}

Cars_tmp.map(str => str + getValue(str))

我建议使用数组 unapply 实现 getValue,但您可以保留您的实现!

def getValue(r: String) = ((r.split("[|]")(1).toInt)/ (r.split("[|]")(3).toInt)).toString