嘿伙计们,所以我正在尝试从列表列表中获取n个列表。我想知道haskell中是否有一个方法与“take”和“drop”方法类似,但是如果能在我的情况下工作。例如:
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中做这样的事情。?任何人都可以指出我如何解决这个问题的正确方向。提前谢谢。
答案 0 :(得分:7)
take
和drop
正是这样做的。它们对所有元素类型的工作方式相同,即使元素类型是列表类型。
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]]