scala> val numbers = Seq(0, 1, 2, 3, 4) numbers: Seq[Int] = List(0, 1, 2, 3, 4) scala> val series = Seq(0, 1, 1, 2, 3) series: Seq[Int] = List(0, 1, 1, 2, 3) scala> numbers zip series res24: Seq[(Int, Int)] = List((0,0), (1,1), (2,1), (3,2), (4,3))
2、zipAll 函数和上面的zip函数类似,但是如果其中一个元素个数比较少,那么将用默认的元素填充。
/** * User: 过往记忆 * Date: 14-12-17 * Time: 上午10:16 * bolg: * 本文地址:/archives/1225.html * 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货 * 过往记忆博客微信公共帐号:iteblog_hadoop */ scala> val xs = List(1, 2, 3) xs: List[Int] = List(1, 2, 3) scala> val ys = List('a', 'b') ys: List[Char] = List(a, b) scala> val zs = List("I", "II", "III", "IV") zs: List1 = List(I, II, III, IV) scala> val x = 0 x: Int = 0 scala> val y = '_' y: Char = _ scala> val z = "_" z: java.lang.String = _ scala> xs.zipAll(ys, x, y) res30: List[(Int, Char)] = List((1,a), (2,b), (3,_)) scala> xs.zipAll(zs, x, z) res31: List[(Int, java.lang.String)] = List((1,I), (2,II), (3,III), (0,IV))
3、zipped函数,这个不好翻译,自己看英文解释吧
scala> val values = List.range(1, 5) values: List[Int] = List(1, 2, 3, 4) scala> (values, values).zipped toMap res34: scala.collection.immutable.Map[Int,Int] = Map(1 -> 1, 2 -> 2, 3 -> 3, 4 -> 4) scala> val sumOfSquares = (values, values).zipped map (_ * _) sum sumOfSquares: Int = 30
4、zipWithIndex函数将元素和其所在的下表组成一个pair。
scala> val series = Seq(0, 1, 1, 2, 3, 5, 8, 13) series: Seq[Int] = List(0, 1, 1, 2, 3, 5, 8, 13) scala> series.zipWithIndex res35: Seq[(Int, Int)] = List((0,0), (1,1), (1,2), (2,3), (3,4), (5,5), (8,6), (13,7))
5、unzip函数可以将一个元组的列表转变成一个列表的元组
scala> val seriesIn = Seq(0, 1, 1, 2, 3, 5, 8, 13) seriesIn: Seq[Int] = List(0, 1, 1, 2, 3, 5, 8, 13) scala> val fibonacci = seriesIn.zipWithIndex fibonacci: Seq[(Int, Int)] = List((0,0), (1,1), (1,2), (2,3), (3,4), (5,5), (8,6), (13,7)) scala> fibonacci.unzip res46: (Seq[Int], Seq[Int]) = (List(0, 1, 1, 2, 3, 5, 8, 13),List(0, 1, 2, 3, 4, 5, 6, 7)) scala> val seriesOut = fibonacci.unzip _1 seriesOut: Seq[Int] = List(0, 1, 1, 2, 3, 5, 8, 13) scala> val numbersOut = fibonacci.unzip _2 numbersOut: Seq[Int] = List(0, 1, 2, 3, 4, 5, 6, 7)本博客文章除特别声明,全部都是原创!
res24: Seq[(Int, Int)] = List((0,0), (1,1), (2,1), (3,2), (4,3), (5,5))
这个有问题吧
已经修正,感谢。