如何在 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
我想在另一个列表的每个元素的末尾添加一个列表的元素。
我有:
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