枚举非确定性列表的所有可能性

时间:2013-09-08 21:39:52

标签: python list functional-programming list-comprehension

我正在使用在某些地方可能具有“模糊”值的列表。列表足够小,实现回溯搜索似乎很愚蠢。目前,我在列表中使用包含可能值的子列表来表示不明确的值。例如,列表:

[1, 2, [3,4]]

可以是列表[1,2,3][1,2,4]。列表中可能有多个不明确的值,尽管模糊元素本身可能不包含含糊不清的元素。给定一个含有不明确值的列表,我正在尝试生成列表可能代表的所有可能列表的列表。上一个列表应返回[[1,2,3],[1,2,4]]

有优雅的方法吗?我试图递归地向后构建每个列表并附加到一个空列表,但我不能完全围绕如何做它。

1 个答案:

答案 0 :(得分:2)

您可以使用itertools.product,但您必须稍微修改源列表:

>>> import itertools
>>> l = [[1], [2], [3, 4]]
>>> list(itertools.product(*l))
[(1, 2, 3), (1, 2, 4)]