【问题标题】:Scala tuple of collections instead of collection of tuples集合的Scala元组而不是元组的集合
【发布时间】:2014-08-13 04:03:21
【问题描述】:

在对map 的一次调用中,我们构造了一个元组集合,例如这样,

val a = (1 to 5).map { x => (x, x*10) }
a: Vector((1,10), (2,20), (3,30), (4,40), (5,50))

然后我们将第一个和第二个元素提取到两个独立的、不可变的集合中

val b1 = a.map {_._1}
b1: Vector(1, 2, 3, 4, 5)

val b2 = a.map {_._2}
b2: Vector(10, 20, 30, 40, 50)

如何通过仅对初始集合进行一次迭代来获得b1b2

val (b1,b2) = (1 to 5).map { x => /* ??? */ }

【问题讨论】:

    标签: scala tuples scala-collections


    【解决方案1】:

    使用unzip:

    scala> (1 to 5).unzip { x => x -> x * 3 }
    res0: (Vector(1, 2, 3, 4, 5),Vector(3, 6, 9, 12, 15))
    

    【讨论】:

    • 注意这和:(1 to 5).unzip{ x => (x, x * 3)}
    【解决方案2】:

    请注意,Ionuț G. Stan 的回答与以下内容相同:

    (1 to 5).unzip{ x => (x, x * 3)}
    

    这使得如何获取 三元组 个集合变得更加清晰:

    (1 to 5).unzip3{ x => (x, x * 3, x * 10)}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 2018-07-20
      • 2010-10-05
      • 2021-06-09
      • 2015-09-24
      相关资源
      最近更新 更多