【发布时间】:2018-11-23 01:23:29
【问题描述】:
我目前遇到以下问题(我在这里找不到真正适合这个的解决方案):
我有三个列表 a = [a, b, c]、b = [1, 2, 3] 和 c = [0.1, 0.2, 0.3]。
我想创建一个列表列表(也许我应该使用 numpy 数组?),其中包含这些列表之间的所有组合,但是每个子列表中的每个元素也都在 bruce-force 中迭代模式,从而生成以下内容:
mylist = [[[a, 1, 0.1], [b, 1, 0.1], [c, 1, 0.1]],
[[a, 1, 0.1], [b, 1, 0.1], [c, 1, 0.2]],
...
[[a, 2, 0.3], [b, 3, 0.3], [c, 1, 0.1]],
...
[[a, 1, 0.3], [b, 1, 0.3], [c, 1, 0.3]],
...
[[a, 3, 0.3], [b, 1, 0.3], [c, 3, 0.1]]
...
[[a, 3, 0.3], [b, 3, 0.3], [c, 3, 0.3]]]
我很欣赏这将等同于一个非常大的列表(很高兴被告知更好的方法!),但我实际上需要一个包含每个子列表的三维列表,例如mylist[0],作为包含单个子列表参数(例如,[[a, 3, 0.3], [b, 3, 0.3], [c, 3, 0.3]] 的列表传递给将它们用作输入的算法。这个 3-D 列表有效地形成了需要“搜索”的整个参数空间。因此,您可以看到以下组合示例的原因:
[[a, 1, 0.3], [b, 2, 0.3], [c, 2, 0.3]],
[[a, 3, 0.1], [b, 1, 0.3], [c, 2, 0.1]]
很重要,因为它们是算法输入的唯一参数。
非常感谢您对此提供任何指导,谢谢。
【问题讨论】:
-
欢迎来到 StackOverflow!那么,您尝试过什么?
-
输出维度是多少?
-
@kevinkayaks,输出维度如下:
-
` x = [[[a],[0],[0.1]],[[a],[0],[0.1]],[[a],[0],[ 0.1]]], y = 以上的所有组合`。那有意义吗?所以 3 个维度,其中 y 等于上述行的所有组合。
-
@Andreas 我曾尝试为每个列表使用递归循环,然后使用带有排列的 iterools,但无法按照上述方式获得正确的输出。
标签: python-3.x python-2.7 list numpy itertools