序列的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)
}