我想一個列表內訪問列表的元素並檢查元素是否比最低值。 實施例:列表[([1,2],0.3),([1.5,6],0.35),([4,10],0.25),([7,15],0.1)]
讓最小值:1
結果應該是:列表[([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
}
但是這不起作用。請幫我解決這個問題。
這不是真的清楚你要什麼過濾;在你想要的結果中,'([1,6],0.65)是從哪裏來的?它不在原始列表中... – maioman
請[閱讀有關MCV](http://stackoverflow.com/help/mcve)的代碼示例。 – jwvh
我編輯了這個問題。 –