【问题标题】:Scala - Two Lists to Tuple ListScala - 元组列表的两个列表
【发布时间】:2023-03-19 04:20:01
【问题描述】:

去年我在标准 ML 方面有相当多的经验,但在大约 10 个月内我还没有完成任何真正的函数式编程。现在我在 Scala 的潮流中,我很难找到一个我在编写编译器时在标准 ML 中广泛使用的操作(尽管公平地说,这种方法可能不是库方法)。

基本上,我有两个列表:

List("a","b","c")
List(1,2,3)

我想要一个操作,它会给我一个这样的元组列表:

List(("a",1), ("b",2), ("c",3))

我可以使用标准 Scala 函数来获得此结果吗? (我认为我们在标准 ML 中将其称为 zip 函数,但当我搜索 Scala zip 函数时,这似乎指的是不同的东西。)

【问题讨论】:

  • 很确定 zip 是你想要的,是什么让你觉得它与众不同?
  • 我在 Stackoverflow 上发现了另一个帖子,它给出了不同的压缩定义,所以我只是假设我错了。 ://
  • 你也上过CMU吗?

标签: scala functional-programming


【解决方案1】:

你是对的,你可以使用 zip:

val a = List("a","b","c")
// a: List[String] = List(a, b, c)

val b = List(1,2,3)
// b: List[Int] = List(1, 2, 3)

a zip b  // beautified a.zip(b) 
//res0: List[(String, Int)] = List((a,1), (b,2), (c,3))

【讨论】:

  • 谢谢,我不敢相信这在任何搜索中都没有出现。在这个问题搜索之前,我花了整整 15 分钟的时间,但一无所获。
  • @GJK 请注意,元组上还有 .zipped 方法(如果您想压缩 2 或 3 个集合),其作用几乎相同:(a,b,c).zipped.toList
  • 我确实找到了那个方法,但是当我将它输入到 SimplyScala.com 的终端时它不起作用,所以我只是假设它不能满足我的需要。跨度>
  • 如何将较长的元组(如 5 个或 6 个集合)压缩在一起?
猜你喜欢
  • 2016-11-15
  • 1970-01-01
  • 2011-11-29
  • 2015-02-13
  • 2015-01-19
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多