2015-11-21 37 views
0

我試圖分裂的50項爲不同大小的子列表清單;例如10 3 4 5。拆分列表爲不均勻子列表

我試着用take這樣做,但這種只需要前幾個項目列表中的反覆,而不是通過索引一起移動。

有沒有人有任何建議如何做到這一點?或者可以鏈接到一個Prelude/Data.List函數,它可以幫助我。 (我環顧四周,但我在努力尋找什麼。)

+1

[splitAt](http://hackage.haskell.org/package/base-4.8.1.0/docs/Prelude.html#v:splitAt)。 – Mephy

+1

['splitPlaces'(http://hackage.haskell.org/package/split-0.2.2/docs/Data-List-Split.html#v:splitPlaces) –

+0

splitPlaces似乎是完美的。我在後面的函數中使用它。任何想法如何分配時訪問每個子列表? – Nowandthen98

回答

1

splitAt :: Int -> [a] -> ([a], [a]) 

snd :: (a, b) -> b 

一個裝配件組合的應該做的伎倆。

編輯:

splitUp :: [Int] -> [a] -> [[a]] 
splitUp [] xs = [xs] 
splitUp _ [] = [] 
splitUp (l:ls) xs = let (a,b) = splitAt l xs in a : splitUp ls b 
+0

我明白這將如何工作的第一個子列表;和最後一個。但是,我將如何使用它來獲得索引10-20的項目? – Nowandthen98