我有3个元素的列表。 我想从每个中创建范围并迭代所有可能的组合。
我需要重新编写以便能够在初始列表中使用不同数量的元素进行操作:
val el = List(5, 4, 7)
(0 to el(0)).map { e0 =>
(0 to el(1)).map { e1 =>
(0 to el(2)).map { e2 =>
doSmth(List(e1,e2,e0))
}}}
应该是简单的任务。只是好奇如何谷歌...
答案 0 :(得分:2)
您可以使用递归轻松获得所有组合:
def combos(list: List[Int]): List[List[Int]] = list match {
case hd::tl => combos(tl).flatMap{ combo => (0 to hd).map(_ :: combo) }
case Nil => List(List())
}