序列的scala组合

序列的scala组合,scala,functional-programming,Scala,Functional Programming,我怎样才能做到这一点: (Seq(1,2,3,4,5), Seq(Seq(1.0, 2.0, 3.0, 4.0, 5.0), Seq(1.0, 2.0, 3.0, 4.0, 5.0), Seq(1.0, 2.0, 3.0, 4.0, 5.0)), Seq("a", "b", "c")) .zipped.map((a,b,c) => (a,b,c)) 代替接收: List((1,List(1.0, 2.0, 3.0, 4.0, 5.0),a), (2,Li

我怎样才能做到这一点:

(Seq(1,2,3,4,5), 
  Seq(Seq(1.0, 2.0, 3.0, 4.0, 5.0),
    Seq(1.0, 2.0, 3.0, 4.0, 5.0), 
    Seq(1.0, 2.0, 3.0, 4.0, 5.0)), 
  Seq("a", "b", "c"))
  .zipped.map((a,b,c) => (a,b,c))
代替接收:

List((1,List(1.0, 2.0, 3.0, 4.0, 5.0),a), (2,List(1.0, 2.0
获取:

List((1,List(1.0),a), (1,List(2.0),a)(1,List(3.0),a)(1,List(4.0),a)(1,List(5.0),a)(2,List(1.0, 2.0
你是说这个吗

val s = (Seq(1,2,3,4,5), 
  Seq(Seq(1.0, 2.0, 3.0, 4.0, 5.0),
    Seq(1.0, 2.0, 3.0, 4.0, 5.0), 
    Seq(1.0, 2.0, 3.0, 4.0, 5.0)), 
  Seq("a", "b", "c"))
  .zipped
  .flatMap{ case (n, seq, c) =>
    seq.map(s => (n, List(s), c))
  }

println(s)
生成以下输出(直至缩进):


请注意,对于-comprehension,下面的
要短得多、更清晰得多,因此产生了完全相同的输出:

for {
  (n, c) <- Seq(1, 2, 3) zip Seq("a", "b", "c")
  s <- Seq(1.0, 2.0, 3.0, 4.0, 5.0)
} yield {
  (n, List(s), c)
}
用于{

(n,c)您的预期输出突然以“2.0”结尾?我喜欢理解。然而,真实数据不是静态的(如您所述),而是完全不同的…即真实序列-我只得到更复杂的表达式。
for {
  (n, c) <- Seq(1, 2, 3) zip Seq("a", "b", "c")
  s <- Seq(1.0, 2.0, 3.0, 4.0, 5.0)
} yield {
  (n, List(s), c)
}