首页 > 解决方案 > 给定每个数字或索引的选择列表,是否有一个函数可以生成可能的排列?

问题描述

我正在尝试生成可能的序列,给定最终列表的每个索引的选择列表。

示例:在下面的字典中,我有 5 个单词和每个单词可能的不同值。我想生成所有可能的排列或序列。

{'John': ['NNP'], 'went': ['VBD'], 'to': ['TO'], 'work': ['VBP', 'NN', 'VB'], '.': ['.']}

在此示例中,将有 1 * 1 * 1 * 3 * 1 = 3 个序列。

标签: pythonpython-3.xpermutation

解决方案


你想要的itertools.product功能:

from itertools import product

arrs = [[1,2],[1],[1,2,3],[4]]

for combo in product(*arrs):
  print(combo)

输出:

(1, 1, 1, 4)
(1, 1, 2, 4)
(1, 1, 3, 4)
(2, 1, 1, 4)
(2, 1, 2, 4)
(2, 1, 3, 4)

推荐阅读