2012-04-21 46 views
0

嘿傢伙,所以我試圖從清單列表中獲得n個列表。我想知道haskell中是否有類似於「take」和「drop」方法的方法,但是如果在我的情況下工作。例如:Haskell - 從列表中獲得n個列表

Input = [ [1,2,3,4], [5,6,7,8], [9,1,2,3], [4,5,6,7], [8,9,1,2], [3,4,5,6] ]

我希望能夠從列表中的這個列表取前3個元素,並與像這樣結束:

Output = [ [1,2,3,4], [5,6,7,8], [9,1,2,3]]

我也想能夠從列表中刪除前3個元素,並最終得到如下結果:

Output = [[4,5,6,7], [8,9,1,2], [3,4,5,6]]

是否有可能在haskell中做這樣的事情?任何人都可以指出我如何解決這個問題的正確方向。提前致謝。

回答

7

takedrop這樣做。即使元素類型是列表類型,它們也適用於所有元素類型。

Prelude> take 3 [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]] 
[[1,2,3,4],[5,6,7,8],[9,10,11,12]] 
Prelude> drop 3 [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]] 
[[13,14,15,16],[17,18,19,20]] 
+2

不要忘了'splitAt'! – 2012-04-22 03:34:03