gpt4 book ai didi

list - 在 Haskell 中将列表分组为包含 n 个元素的列表

转载 作者:行者123 更新时间:2023-12-03 11:03:21 25 4
gpt4 key购买 nike

库中的列表是否有一个操作可以组成 n 个元素组?例如:n=3

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

如果没有,我该怎么做?

最佳答案

快速搜索 Hoogle表明没有这样的功能。另一方面,回复说split中有一个包,称为 chunksOf .

但是,您可以自己完成

group :: Int -> [a] -> [[a]]
group _ [] = []
group n l
| n > 0 = (take n l) : (group n (drop n l))
| otherwise = error "Negative or zero n"

当然,有些括号可以去掉,我留在这里是为了了解代码的作用:

基本情况很简单:只要列表为空,只需返回空列表。

递归案例首先测试 n是积极的。如果 n0或者更低,我们会进入一个无限循环,我们不希望这样。然后我们使用 take 将列表分成两部分和 drop : take回馈第一个 n元素而 drop返回其他的。然后,我们添加第一个 n通过将我们的函数应用于原始列表中的其他元素而获得的列表中的元素。

enter image description here

关于list - 在 Haskell 中将列表分组为包含 n 个元素的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12876384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com