List 在haskell中对列表中的元素进行分组
我想将列表从List 在haskell中对列表中的元素进行分组,list,haskell,List,Haskell,我想将列表从[1,26,3,94,51,6,7,8,9,10,11,12,73,29,19,90,76,87,1] 直到哈斯凯尔结束。(我试图按子列表长度的递增顺序对元素进行分组) 我是haskell的新手,请帮助我您可以创建自己的递归函数来接收列表并返回列表列表,首先我们需要从列表中提取n个元素,我们称之为获取nxs,之后,我们需要将该元素与其余元素合并,为此,我们需要调用mysplitn+1并删除合并到列表中的元素,因此我们只需要调用drop nxs 分组标准是什么?为什么将[26,3]组合
[1,26,3,94,51,6,7,8,9,10,11,12,73,29,19,90,76,87,1]
直到哈斯凯尔结束。(我试图按子列表长度的递增顺序对元素进行分组)
我是haskell的新手,请帮助我您可以创建自己的递归函数来接收列表并返回列表列表,首先我们需要从列表中提取n个元素,我们称之为
获取nxs
,之后,我们需要将该元素与其余元素合并,为此,我们需要调用mysplitn+1
并删除合并到列表中的元素,因此我们只需要调用drop nxs
分组标准是什么?为什么将
[26,3]
组合在一起?你试过什么?你被困在哪里了?谢谢。是否有任何内置函数可以执行相同的操作?是的,您可以将foldr与lambda一起使用。将使此代码更有效率,这样您就不必使用take
和drop
重复列表两次。
mySplit :: Int -> [a] -> [[a]]
mySplit n [] = []
mySplit n xs = (take n xs):(mySplit (n + 1) (drop n xs))
ghci> mySplit 1 [1,26,3,94,51,6,7,8,9,10,11,12,73,29,19,90,76,87,1]
[[1],[26,3],[94,51,6],[7,8,9,10],[11,12,73,29,19],[90,76,87,1]]