给出
println(split(7, (1 to 15).toList))
运行时
def split[X](n: Int, xs: List[X]): (List[X], List[X]) = {
if (n <= 0) (Nil, xs)
else if (n >= xs.size) (xs, Nil)
else {
val grouped = xs.grouped(n).toList
return (grouped(0), grouped(1))
}
}
我得到了
(List(1, 2, 3, 4, 5, 6, 7),List(8, 9, 10, 11, 12, 13, 14))
为什么最后一个元素掉了?
答案 0 :(得分:4)
grouped
返回三个IndexedSeq
并且您只返回前两个。
scala> (1 to 15).grouped(7).toList
res0: List[scala.collection.immutable.IndexedSeq[Int]] = List(
Vector(1, 2, 3, 4, 5, 6, 7),
Vector(8, 9, 10, 11, 12, 13, 14),
Vector(15)
)
grouped
返回生成大小大小列表的迭代器,但如果元素没有均匀划分,则会截断最后一个,因此您可以看到将15个项目分组的位置返回到额外List
。
答案 1 :(得分:2)
因为你得到三个清单。
您将15个元素的列表分成每个(最多)7个元素的列表。最终得到的是7的列表,7的第二个和1个元素的三分之一。