Scala - 列表列表中的两个列表

GJK*_*GJK 21 functional-programming scala

去年我对标准ML有相当多的经验,但我在大约10个月内没有做过任何真正的函数式编程.现在我正处于Scala的潮流中,我在编写编译器时遇到了在标准ML中广泛使用的操作(尽管公平地说,这种方法可能不是库方法).

基本上,我有两个列表:

List("a","b","c")
List(1,2,3)
Run Code Online (Sandbox Code Playgroud)

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

List(("a",1), ("b",2), ("c",3))
Run Code Online (Sandbox Code Playgroud)

是否有标准的Scala函数可用于获得此结果?(我认为我们称它为标准ML中的zip函数,但在我搜索Scala zip函数时,它似乎指的是不同的东西.)

om-*_*nom 43

你是对的,你可以使用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))
Run Code Online (Sandbox Code Playgroud)

  • @GJK 请注意,元组上还有方法“.zipped”(如果您想压缩 2 个或 3 个集合),其作用几乎相同:“(a,b,c).zipped.toList” (3认同)
  • 将5或6个集合中的较长元组压缩在一起怎么样? (3认同)