鉴于以下列表:
List(List(1,2,3), List(4,5))
Run Code Online (Sandbox Code Playgroud)
我想生成所有可能的组合.使用yield,可以按如下方式完成:
scala> for (x <- l.head; y <- l.last) yield (x,y)
res17: List[(Int, Int)] = List((1,4), (1,5), (2,4), (2,5), (3,4), (3,5))
Run Code Online (Sandbox Code Playgroud)
但我遇到的问题是List [List [Int]]没有修复; 它可以增大和缩小尺寸,所以我永远不知道for我需要提前多少个循环.我想要的是能够将该列表传递给一个函数,该函数将动态生成组合而不管我拥有的列表数量,因此:
def generator (x : List[List[Int]) : List[List[Int]]
Run Code Online (Sandbox Code Playgroud)
是否有可以执行此操作的内置库函数.如果不是我该怎么做呢.任何指针和提示都会很棒.
更新:
@DNA的答案用以下(不是那么大的)嵌套List结构来打击堆:
List(
List(0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, …Run Code Online (Sandbox Code Playgroud) scala ×1