如何在Scala中拆分List?

Mic*_*ael 1 collections scala partitioning list

如何将列表L(或任何其他集合)拆分为2个列表,以便第一个包含80%,L第二个包含其余列表?

Sha*_*nds 6

val (first80pct, rest) = L.splitAt(L.size * 4 / 5)
Run Code Online (Sandbox Code Playgroud)

您可能需要小心在没有确定长度的集合上使用它(例如,流).

  • 还要注意边缘情况 - 例如,如果L的大小为1,则上面将唯一的元素放入"rest".如果我们想要*在第一个中至少*80%,那么`math.ceil(L.size*0.80) .toInt`会更合适. (3认同)