Scala zip 拉链操作



  1. import scala.runtime._


  2. scala> val year = List(2010, 2010, 2010, 2016, 2016)
  3. year: List[Int] = List(2010, 2010, 2010, 2016, 2016)

  4. scala>

  5. scala> val month = List(1, 2, 3, 9, 10)
  6. month: List[Int] = List(1, 2, 3, 9, 10)

  7. scala>

  8. scala> val price = List(13.8, 32, 62.9, 66, 88, 99)
  9. price: List[Double] = List(13.8, 32.0, 62.9, 66.0, 88.0, 99.0)

  10. scala>

  11. scala> val profit = List(1.1, 2.2, 3.3, 4.4, 5.5)
  12. profit: List[Double] = List(1.1, 2.2, 3.3, 4.4, 5.5)

  13. scala>

  14. scala> val res1 = year zip month
  15. res1: List[(Int, Int)] = List((2010,1), (2010,2), (2010,3), (2016,9), (2016,10))

  16. scala> res1.foreach(println)
  17. (2010,1)
  18. (2010,2)
  19. (2010,3)
  20. (2016,9)
  21. (2016,10)

  22. scala>

  23. scala> val res2 = price zip profit
  24. res2: List[(Double, Double)] = List((13.8,1.1), (32.0,2.2), (62.9,3.3), (66.0,4.4), (88.0,5.5))

  25. scala> res2.foreach(println)
  26. (13.8,1.1)
  27. (32.0,2.2)
  28. (62.9,3.3)
  29. (66.0,4.4)
  30. (88.0,5.5)

  31. scala>

  32. scala> val res3 = res1 zip res2
  33. res3: List[((Int, Int), (Double, Double))] = List(((2010,1),(13.8,1.1)), ((2010,2),(32.0,2.2)), ((2010,3),(62.9,3.3)), ((2016,9),(66.0,4.4)), ((2016,10),(88.0,5.5)))

  34. scala> res3.foreach(println)
  35. ((2010,1),(13.8,1.1))
  36. ((2010,2),(32.0,2.2))
  37. ((2010,3),(62.9,3.3))
  38. ((2016,9),(66.0,4.4))
  39. ((2016,10),(88.0,5.5))

  40. scala>

  41. scala> val spark1 = List("Vector", "Feature")
  42. spark1: List[String] = List(Vector, Feature)

  43. scala>

  44. scala> val spark2 = List("Scala", "SQL", "MLlib", "GraphX", "Streaming")
  45. spark2: List[String] = List(Scala, SQL, MLlib, GraphX, Streaming)

  46. scala>

  47. scala> val res4 = spark1 zip spark2
  48. res4: List[(String, String)] = List((Vector,Scala), (Feature,SQL))

  49. scala> res4.foreach(println)
  50. (Vector,Scala)
  51. (Feature,SQL)

  52. scala>

  53. scala> // a.zipAll(b, thisElem, thatElem),a短,用thisElem填补;b短,用thatElem填补

  54. scala> val res5 = spark1.zipAll(spark2, "DataFrame", "Pipeline")
  55. res5: List[(String, String)] = List((Vector,Scala), (Feature,SQL), (DataFrame,MLlib), (DataFrame,GraphX), (DataFrame,Streaming))

  56. scala> res5.foreach(println)
  57. (Vector,Scala)
  58. (Feature,SQL)
  59. (DataFrame,MLlib)
  60. (DataFrame,GraphX)
  61. (DataFrame,Streaming)

  62. scala>

  63. scala> val res6 = spark2.zipAll(spark1, "DataFrame", "Pipeline")
  64. res6: List[(String, String)] = List((Scala,Vector), (SQL,Feature), (MLlib,Pipeline), (GraphX,Pipeline), (Streaming,Pipeline))

  65. scala> res6.foreach(println)
  66. (Scala,Vector)
  67. (SQL,Feature)
  68. (MLlib,Pipeline)
  69. (GraphX,Pipeline)
  70. (Streaming,Pipeline)

  71. scala> res6.par.foreach(println)
  72. (Scala,Vector)
  73. (SQL,Feature)
  74. (MLlib,Pipeline)
  75. (GraphX,Pipeline)
  76. (Streaming,Pipeline)



  77. scala> val res7 = res6.zipWithIndex
  78. res7: List[((String, String), Int)] = List(((Scala,Vector),0), ((SQL,Feature),1), ((MLlib,Pipeline),2), ((GraphX,Pipeline),3), ((Streaming,Pipeline),4))

  79. scala> res7.foreach(println)
  80. ((Scala,Vector),0)
  81. ((SQL,Feature),1)
  82. ((MLlib,Pipeline),2)
  83. ((GraphX,Pipeline),3)
  84. ((Streaming,Pipeline),4)



  85. scala> val a = Array(
  86.      | (1, 10),
  87.      | (2, 11),
  88.      | (3, 12),
  89.      | (4, 13),
  90.      | (5, 14))
  91. a: Array[(Int, Int)] = Array((1,10), (2,11), (3,12), (4,13), (5,14))



  92. scala> val b = a.unzip
  93. b: (Array[Int], Array[Int]) = (Array(1, 2, 3, 4, 5),Array(10, 11, 12, 13, 14))



  94. scala> val c = List(
  95.      | (1, 10, "a"),
  96.      | (2, 11, "b"),
  97.      | (3, 12, "c"),
  98.      | (4, 13, "d"),
  99.      | (5, 14, "e"))
  100. c: List[(Int, Int, String)] = List((1,10,a), (2,11,b), (3,12,c), (4,13,d), (5,14,e))



  101. scala> val d = c.unzip3
  102. d: (List[Int], List[Int], List[String]) = (List(1, 2, 3, 4, 5),List(10, 11, 12, 13, 14),List(a, b, c, d, e))

  103.  

  104. scala> d._3.par.foreach(println)
  105. a
  106. c
  107. b
  108. d
  109. e

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29070860/viewspace-2127856/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29070860/viewspace-2127856/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值