या यदि आप अपना खुद का बनाना चाहते हैं:
def split[A](xs: List[A], n: Int): List[List[A]] = {
if (xs.size <= n) xs :: Nil
else (xs take n) :: split(xs drop n, n)
}
उपयोग:
scala> split(List(1,2,3,4,5,6,"seven"), 4)
res15: List[List[Any]] = List(List(1, 2, 3, 4), List(5, 6, seven))
संपादित करें : 2 साल बाद इसकी समीक्षा करने के बाद, मैं इस कार्यान्वयन की सिफारिश नहीं करूंगा क्योंकि size
O (n) है, और इसलिए यह विधि O (n ^ 2) है, जो बताती है कि अंतर्निहित सूची बड़ी सूचियों के लिए क्यों तेज हो जाती है, जैसा कि नीचे टिप्पणी में नोट किया गया है। आप निम्नानुसार कुशलतापूर्वक लागू कर सकते हैं:
def split[A](xs: List[A], n: Int): List[List[A]] =
if (xs.isEmpty) Nil
else (xs take n) :: split(xs drop n, n)
या यहां तक कि (थोड़ा) अधिक कुशलता से उपयोग splitAt
:
def split[A](xs: List[A], n: Int): List[List[A]] =
if (xs.isEmpty) Nil
else {
val (ys, zs) = xs.splitAt(n)
ys :: split(zs, n)
}