PYTHON-从一组多选中输出所有可能的结果?

PYTHON-从一组多选中输出所有可能的结果?,python,permutation,choice,Python,Permutation,Choice,这是非常基本的,但我不知道该怎么做 假设我有一个“选择”列表作为输入。例如: c = [2,3,2] 这表示3个选项,包括2个选项、3个选项,然后是2个选项。作为输出,我需要如下内容: [1,1,1] [1,1,2] [1,2,1] [1,2,2] [1,3,1] [1,3,2] [2,1,1] [2,1,2] [2,2,1] [2,2,2] [2,3,1] [2,3,2] 所以每一个选择的排列。我知道如果每次都有相同数量的选择(示例中为3),我会怎么做,但我需要它来处理任意数量的选择。我毫

这是非常基本的,但我不知道该怎么做

假设我有一个“选择”列表作为输入。例如:

c = [2,3,2]
这表示3个选项,包括2个选项、3个选项,然后是2个选项。作为输出,我需要如下内容:

[1,1,1]
[1,1,2]
[1,2,1]
[1,2,2]
[1,3,1]
[1,3,2]
[2,1,1]
[2,1,2]
[2,2,1]
[2,2,2]
[2,3,1]
[2,3,2]
所以每一个选择的排列。我知道如果每次都有相同数量的选择(示例中为3),我会怎么做,但我需要它来处理任意数量的选择。我毫不怀疑以前有人问过这个问题,但我正在搜索的术语并没有出现任何问题

这可以通过以下方式完成:

我们循环浏览您的列表,并创建一个表示每个列的潜在值的范围

>>> [range(1, j+1) for j in c]
[range(1, 3), range(1, 4), range(1, 3)]
(我使用3.x,而
range()
给出了一个生成器,在2.x中,它将是一个列表,例如:
[[1,2],[1,2,3],[1,2]]
,无论哪种方式它都可以工作-当你在这里使用它时,除非你特别喜欢,否则它不值得在2.x中使用
xrange()

然后,我们将其解包到
itertools.product()
中,它为我们提供了所有可能的组合,这正是您所需要的。

这可以通过和:

我们循环浏览您的列表,并创建一个表示每个列的潜在值的范围

>>> [range(1, j+1) for j in c]
[range(1, 3), range(1, 4), range(1, 3)]
(我使用3.x,而
range()
给出了一个生成器,在2.x中,它将是一个列表,例如:
[[1,2],[1,2,3],[1,2]]
,无论哪种方式它都可以工作-当你在这里使用它时,除非你特别喜欢,否则它不值得在2.x中使用
xrange()


然后我们将其解包到
itertools.product()
中,它为我们提供了所有可能的组合,这就是您想要的。

这很简单。我不理解itertools的产品功能,现在我正在演示。谢谢,那很容易。我不理解itertools的产品功能,现在我正在演示。非常感谢。