Python 每个列表中一项的所有组合

标签 python loops python-itertools combinatorics

<分区>

我有不同数量的不同长度的列表。我需要尝试创造每个列表都有一个项目的所有可能性。这如何在 Python 中完成?

例子

l1 =  ['a', 'b', 'c']
l2 =  [1, 2]
l3 =  [6]

# Expected result:
[
  ['a', 1, 6],
  ['a', 2, 6],
  ['b', 1, 6],
  ['b', 2, 6],
  ['c', 1, 6],
  ['c', 2, 6],
]

在这种情况下我可以有 3 个循环,但由于这是针对数量不明确的列表,因此无法缩放。

我尝试使用 itertools 进行了一些尝试,但无法弄清楚该用什么来处理我的案例,也无法在此处找到类似的问题。因此,我们将不胜感激。

最佳答案

如果您有不同数量的列表,您应该使用列表的列表,而不是单独的变量。然后您可以将该列表展开为 itertools.product() 的参数。

import itertools

lists = [
    ['a', 'b', 'c'],
    [1, 2],
    [6]
]

print(list(itertools.product(*lists)))

关于Python 每个列表中一项的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66256806/

相关文章:

python - "if n"是什么意思?

php - 多维数组的递归循环?

Python 逐步迭代列表

Python Selenium Firefox 壁虎驱动程序。从终端分离浏览器

python - 如何在 Azure 中执行运行 Excel 实例并每天触发 VBA 的 Python 脚本

c++ - 正确使用for循环

python - 映射/遍历 Python 对象列表

python itertool组合列表不完整

python - (初学者 Python)根据用户输入创建 if/else 语句?

python - 递归比迭代更糟糕吗?