如何筛选其他列表的列表,例如。
val l = List(List(1,2,3), List(1,2,4), List(9,8,7))
返回不按降序排列的元素列表,列表中元素的总和为奇数。所以它应该会回来 List(1,2,4) (总和为7,元素不按降序排列)。我在想 l.filter( _ < _ ).filter( _ + _ % 2 != 0) 但我真的不知道怎么做。
List(1,2,4)
l.filter( _ < _ ).filter( _ + _ % 2 != 0)
dpiehjr41#
您可以检查排序后的列表是否与列表本身相同:
val filtered = l.filter(x => x.sorted == x && x.sum % 2 != 0)
tp5buhyn2#
尾部递归方法@luis指出:
def isAscendingAndOddSum(xss: List[List[Int]]): List[List[Int]] = { @scala.annotation.tailrec def isAscendingAndOddSumR(xss: List[List[Int]], acc: List[List[Int]]): List[List[Int]] = xss match { case Nil => acc case h::t if(h.sorted == h && h.sum % 2 != 0) => isAscendingAndOddSumR(t, h :: acc) case h::t => isAscendingAndOddSumR(t, acc) } isAscendingAndOddSumR(xss, List()) } scala> isAscendingAndOddSum(List(List(1,2,3), List(1,2,4), List(9,8,7))) val res11: List[List[Int]] = List(List(1, 2, 4))
2条答案
按热度按时间dpiehjr41#
您可以检查排序后的列表是否与列表本身相同:
tp5buhyn2#
尾部递归方法@luis指出: