【问题标题】:Scala: Iterate through list of rangesScala:遍历范围列表
【发布时间】:2015-03-26 19:14:11
【问题描述】:

我有一个包含 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))
}}}

这应该是简单的任务。只是好奇如何用谷歌搜索...

【问题讨论】:

  • 我不确定你的要求是否有意义,因为你必须在编译时知道doSmth 需要多少参数,这意味着你必须知道有多低el 也在编译时。

标签: scala


【解决方案1】:

你可以很容易地使用递归获得所有组合:

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())
}

【讨论】:

    猜你喜欢
    • 2020-09-07
    • 2023-03-26
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2016-04-30
    • 2015-02-27
    • 1970-01-01
    • 2013-05-03
    相关资源
    最近更新 更多