python - 生成未知数量变量的所有组合
问题描述
我有一个变量列表,其中的数量可以改变。每个变量都有一个下限、上限和一个增量值。例如:
variables = {
"a": [1, 10, 1],
"b": [50, 200, 5],
"c": [50, 300, 10]
}
其中对于键“a”,1 是下限,10 是上限,1 是增量。
"a" would go from 1 through 10, incrementing by 1
"b" would go from 50 through 200, incrementing by 5
"c" would go from 50 through 300, incrementing by 10
... there can be more or less such keys.
我需要创建一个包含 a、b 和 c 的所有可能组合的列表,而不需要硬编码嵌套循环,因为变量/键的数量未知,而且我无法理解它。我正在使用 Python 3.7
理想情况下,输出将是每个变量的组合表,可能是逗号分隔的值。例如。
a b c
x y z
x y z
x y z
x y z
但是,任何事情都可以,只要我可以将输出整理成可以将每个组合作为一组访问的格式。例如元组列表。
[
(x, y, z)
(x, y, z)
]
...
解决方案
在这里,假设:
variables = {
"a": [1, 10, 1],
"b": [50, 200, 5],
"c": [50, 300, 10]
}
然后您可以使用以下方法创建迭代器itertools
:
from itertools import product, starmap
cartesian_product = product(*starmap(range, variables.values()))
或者,只是为了向您展示星图在做什么:
cartesian_product = product(*(range(*v) for v in variables.values()))
推荐阅读
- python - 需要通过 python 脚本从具有多张工作表的 xlsx 文件中删除完整的空白行和列
- haskell - 是否存在在没有 Prelude 和 Pattern 匹配的情况下在 Haskell 中声明反向函数的方法?
- ios - SwiftUI: Scaling in Xcode is not the same as on my iPhone
- mips - buildroot,how to set the host platform architecture
- html - Position div under absolute positioned div
- angular - Prime-ng - Get the checked rows from p-table in button click in angular
- angular - Typescript generic type instantiation
- google-apps-script - 用于检索文件夹中所有文档的注释、突出显示的文本和文档名称的 Google 表格脚本
- python - How to segment the cloth area in the image using python opencv
- python - Streamlit Multiple Page UI - Page content retaining on using sliders