首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何组合列表列表和列表列表

如何组合列表列表和列表列表
EN

Stack Overflow用户
提问于 2019-11-06 03:52:54
回答 3查看 69关注 0票数 4

我有列表列表,需要将它与另一个列表列表组合在一起。示例输入: A:[1,2,3,4,5,6,7,8] B:[1,2,3,4,5,6,7,8]

输出示例:[1,2,1,2,1,2,3,4,..,7,8,5,6,7,8,7,8]

包含4个列表的2个列表将返回一个列表大小为4*4 = 16的列表

我尝试过递归地组合列表,但我知道即使可以通过,它也不会起作用。

代码语言:javascript
复制
  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)
EN

回答 3

Stack Overflow用户

发布于 2019-11-06 04:49:16

您可以使用列表理解:

代码语言:javascript
复制
[ xs ++ ys | xs <- listOfLists1, ys <- listOfLists2 ]
票数 4
EN

Stack Overflow用户

发布于 2019-11-06 04:08:06

你可以这样做

代码语言:javascript
复制
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]]
票数 1
EN

Stack Overflow用户

发布于 2019-11-06 12:59:54

正如Robin在评论中所说,你也可以这样做:

代码语言:javascript
复制
liftA2 (++)

我问我的self a question,试图理解为什么这等同于:

代码语言:javascript
复制
[xs ++ ys | xs <- xss, ys <- yss]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58718516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档