包含列表
问题描述:
烫flatMap元组我有,我想下面的输入元组flatMap:(String, List[String])
包含列表
E.G.输入:
("a", ["1", "2"])
("b", ["3", "4"])
所需输出:
("a", "1")
("a", "2")
("b", "3")
("b", "4")
有一种优雅的方式在滚烫/斯卡拉做到这一点?
答
可能不是最好的解决方案,但级联地图,然后平坦的结果是最好的,我可以想出。
有关FP的令人生畏的事情是,你可以用非常不同的方式做同样的事情。希望有人张贴了不同的解决
val input = List(("a", List("1", "2")), ("b", List("3","4")))
val output = input.map(it => it._2.map { (it._1, _)}).flatten
指示的输出可以换到
input.flatMap(tuple => tuple._2.map { (tuple._1 , _) })
答
您可以用多线做for ... yield
表达:
for {
(a, bs) <- tupleList
b <- bs
} yield (a, b)
无需压扁,如果你flatMap。 – pedrofurla