如何在Scala中访问列表中的列表元素

DL

我想访问一个列表中一个列表的元素,并检查这些元素是否大于最小值。示例:List [([1,2],0.3),([1.5,6],0.35),([4,10],0.25),([7,15],0.1)]
设最小值:1
结果应为:List [([[1,6],0.65),([4,10],0.25),([7,15],0.1)]
由于1.5-1小于最小值1,它将将元素[1,2],0.3)和([1.5,6],0.35)合并为[1,6],0.65,这意味着它将采用内部列表的第一个元素和第二个元素的最后一个元素外部列表和外部列表的第二个元素将被添加(0.3 + 0.35)。将对外部列表的所有元素执行此操作。我尝试的代码如下所示:

def reduce (d1:List[(Interval, Rational)]): List[(Interval, Rational)] =
{
    var z = new ListBuffer[(Interval, Rational)]()
    def recurse (list: List[(Interval, Rational)]): Unit = list match { 
        case List(x, y, _*) if ((y._1_1 - x._1_1) < min_val) => 
           val i = x._1_1; y._1_2 
           val w = x._2 + y._2
           z += (i,w)
          else
           z += x
           recurse(list.tail)
        case Nil =>
   }
   z.toList
}  

但这是行不通的。请帮助我解决此问题。

w

好的,您编写的实际上不是Scala代码,为了获得可编译的示例,我不得不进行一些修改,但是请看这是否对您有用。

type Interval = (Double,Double)
type Rational = Double
def reduce (lir:List[(Interval, Rational)]): List[(Interval, Rational)] = {
  val minVal = 1.0
  lir.foldLeft(List.empty[(Interval, Rational)]){
    case (a, b) if a.isEmpty => List(b)
    case (acc, ((i2a, i2b), r2)) => 
      val ((i1a, _), r1) = acc.head
      if (i2a - i1a < minVal) ((i1a, i2b), r1 + r2) :: acc.tail
      else ((i2a, i2b), r2) :: acc
  }.reverse
}

测试用例:

reduce(List( ((1.0,2.0),0.3), ((1.5,6.0),0.35), ((4.0,10.0),0.25), ((7.0,15.0),0.1) ))
// result: List[(Interval, Rational)] = List(((1.0,6.0),0.6499999999999999), ((4.0,10.0),0.25), ((7.0,15.0),0.1))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

列表中的列表 - 如何访问元素

来自分类Dev

如何在python中的字典元素列表中访问字典?

来自分类Dev

如何在字典python中访问列表内的元素?

来自分类Dev

如何在Java中访问对象列表元素?

来自分类Dev

如何在netlogo中访问嵌套列表的元素

来自分类Dev

如何在R中访问排序列表的元素

来自分类Dev

如何在netlogo中访问嵌套列表的元素

来自分类Dev

如何从R中的列表访问元素?

来自分类Dev

如何访问列表中的特定元素?

来自分类Dev

如何访问元组列表中的元组元素

来自分类Dev

如何修改 Scala 列表中的元素?

来自分类Dev

如何在Scala中基于元素索引获取列表中的一组元素?

来自分类Dev

如何在Dart中访问对象列表中的对象列表

来自分类Dev

如何在确保列表中包含Scala中最新的n个元素的同时向列表中添加元素

来自分类Dev

如何在列表中的列表中修改元素

来自分类Dev

如何在列表中的列表中追加元素?

来自分类Dev

如何在Scala中实现不变列表?

来自分类Dev

如何在Scala中处理大型列表?

来自分类Dev

如何在scala中制作简单的列表?

来自分类Dev

如何在Scala中拆分列表?

来自分类Dev

如何在Elm中返回元素列表

来自分类Dev

如何在NightwatchJS中声明元素列表

来自分类Dev

如何在飞镖列表中查找元素

来自分类Dev

如何在列表中查找元素是连续的

来自分类Dev

如何在列表中插入多个元素?

来自分类Dev

访问嵌套列表中的元素

来自分类Dev

访问mutate中的列表元素

来自分类Dev

序言| 访问列表中的元素

来自分类Dev

在python中访问列表元素