[英]How to combine list of lists with list of lists
我有列表列表,需要將其與另一個列表列表結合起來。 示例輸入:A:[[1,2],[3,4],[5,6],[7,8]] B:[[1,2],[3,4],[5,6] ,[7,8]]
示例 output:[[1,2,1,2],[1,2,3,4],..,[7,8,5,6],[7,8,7,8]]
兩個列表中包含 4 個列表的 2 個列表將返回給我們一個大小為 4*4 = 16 的列表列表
我試過只是遞歸地組合列表,但我知道即使 go 通過它也行不通。
mergeAll [[]] [[]] = [[]]
mergeAll [[]] b = b
mergeAll a [[]] = a
mergeAll xs ys = mergeAll (merge xs ys) (drop 1 ys)
merge :: [[a]] -> [[a]] -> [[a]]
merge [[]] [[]] = [[]]
merge xs [[]] = xs
merge [[]] ys = ys
merge (x:xs) (y:ys) = ((x++y):xs)
您可以使用列表推導:
[ xs ++ ys | xs <- listOfLists1, ys <- listOfLists2 ]
你可能會喜歡
Prelude> let doit = \as bs -> as >>= \a -> bs >>= \b -> pure (a ++ b)
Prelude> doit [[1,2],[3,4],[5,6],[7,8]] [[1,2],[3,4],[5,6],[7,8]]
[[1,2,1,2],[1,2,3,4],[1,2,5,6],[1,2,7,8],[3,4,1,2],[3,4,3,4],[3,4,5,6],[3,4,7,8],[5,6,1,2],[5,6,3,4],[5,6,5,6],[5,6,7,8],[7,8,1,2],[7,8,3,4],[7,8,5,6],[7,8,7,8]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.