【发布时间】:2019-10-15 04:34:06
【问题描述】:
我想从这两个列表中创建一个所有组合的列表,其中每个组合也是一个列表。
例如
给定两个列表:[1,2,3] 和 [True, False]
组合:
[(1, False), (2, False), (3, False)]
[(1, False), (2, False), (3, True )]
[(1, False), (2, True ), (3, False)]
[(1, True ), (2, False), (3, False)]
[(1, False), (2, True ), (3, True )]
[(1, True ), (2, False), (3, True )]
[(1, True ), (2, True ), (3, False)]
[(1, True ), (2, True ), (3, True )]
应该有2^n 组合,其中n 是数字的数量。
编辑:
尝试执行以下操作:
[(n, b) | n <- [1,2,3], b <- [True, False]]
(,) <$> [1,2,3] <*> [True, False]
【问题讨论】:
-
在您的示例中,数字是恒定的,因此您可以执行以下操作:
[ [(1,x),(2,y),(3,z)] | x <- [True, False], y <- [True, False], z <- [True, False] ] -
在这种情况下,数字是可变的。唯一不变的是
[True, False] -
我想我说错了,我的意思是在示例中它始终是
1,2,3。
标签: list haskell combinations combinatorics