使用列表理解的列表的子列表

发布于 2024-10-19 13:01:21 字数 122 浏览 0 评论 0原文

就这么简单。我想使用列表理解生成列表的所有子列表。

即: getSublist [1,2,3] 为 [[1], [2], [3], [1,2], [1,3], [2, 3], [1,2,3]]

谢谢

That simple. I want to generate all sublists of a list using list comprehension.

i.e: getSublist [1,2,3] is [[1], [2], [3], [1,2], [1,3], [2, 3], [1,2,3]]

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

熊抱啵儿 2024-10-26 13:01:21

这已经被实现为 Data.List.subsequences ,但是如果您想自己定义它(出于学习目的),您可以这样做:

您不能仅使用列表推导式来做到这一点,但通过一些递归,它看起来像这样:

sublists [] = [[]]
sublists (x:xs) = [x:sublist | sublist <- sublists xs] ++ sublists xs

阅读:空列表的唯一子列表是空列表。 x:xs 的子列表(即头部 x 和尾部 xs 的列表)是 xs 的所有子列表 以及 xs 的每个子列表(前面添加了 x)。

This is already implemented as Data.List.subsequences, but if you want to define it yourself (for learning purposes), you can do it like this:

You can't do it with only list comprehensions, but with some recursion it looks like this:

sublists [] = [[]]
sublists (x:xs) = [x:sublist | sublist <- sublists xs] ++ sublists xs

Read: The only sublist of the empty list is the empty list. The sublists of x:xs (i.e. the list with the head x and the tail xs) are all of the sublists of xs as well as each of the sublists of xs with x prepended to them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文