在Haskell中,如何将x数列表更改为n个n个数列?
第一个子列表的编号从第一到第十,第二个列表从第11到第20 ......
myFunction :: [Int] - > [[INT]]
答案 0 :(得分:5)
Data.List.Split
中有chunksOf
个功能:
chunksOf 2 [0, 1, 2, 3] -- [[0, 1], [2, 3]]
或者,我们splitAt
已prelude
,chunksOf
可以轻松实现:
chunksOf :: Int -> [a] -> [[a]]
chunksOf n [] = []
chunksOf n xs = let (as, bs) = splitAt n xs in as : chunksOf n bs
答案 1 :(得分:3)
使用take and drop可能会更简单一点,并且不需要库。
chunksOf :: Int -> [a] -> [[a]]
chunksOf _ [] = []
chunksOf n xs = take n xs : chunksOf n (drop n xs)