首页 > 解决方案 > 有没有办法找到每个组合以从每个列表中选择一个元素(在列表中)?

问题描述

我试图找到所有组合以从列表中的每个列表中准确选择一个元素。(我更喜欢计算速度最快的方法。)

示例: 如果我的列表是 [[1], [2,3], [4,5,6]] 我希望得到以下结果(以任何顺序): [[1,2,4], [1 ,2,5], [1,2,6], [1,3,4], [1,3,5], [1,3,6]]

我尝试在诸如 itertools 之类的模块中查找功能但没有任何成功,并且不知道如何启动它。

我正在考虑执行以下操作,但我不知道如何完成此操作:查找要查找的排列数(此处称为 m):

m = 1
for letter in letters:
    m *= len(letter)

然后设置一个for循环:

for i in range(m):

然后通过循环遍历列表中的所有列表并获取一个元素来找到每个组合。我正在考虑使用模数(%)函数以某种方式进行选择,但我不知道如何使其工作。

标签: pythoncombinations

解决方案


听起来像你想要的itertools.product()

>>> for x in itertools.product([1], [2,3], [4,5,6]):
...   print(x)
...
(1, 2, 4)
(1, 2, 5)
(1, 2, 6)
(1, 3, 4)
(1, 3, 5)
(1, 3, 6)

推荐阅读