我有一份列表清单,例如:
[
[
[ 1, 2, 3 ], [ 3, 2, 1 ], [ 3, 1, 2 ]
],
[
[ 4, 5, 6 ], [ 6, 4, 5 ]
],
[
[ 8, 9, 10 ], [ 10, 8, 9 ], [ 10, 9, 8 ]
]
]
我需要找到这些中间列表的所有排列,垂直作为列...
[
[
[ 1, 4, 8 ], [ 1, 4, 10 ], [ 1, 4, 10 ],
[ 1, 6, 8 ], [ 1, 6, 10 ], [ 1, 6, 10 ],
[ 3, 4, 8 ], [ 3, 4, 10 ], [ 3, 4, 10 ],
[ 3, 6, 8 ], [ 3, 6, 10 ], [ 3, 6, 10 ],
[ 3, 4, 8 ], [ 3, 4, 10 ], [ 3, 4, 10 ],
[ 3, 6, 8 ], [ 3, 6, 10 ], [ 3, 6, 10 ]
],
...
]
很难解释,但基本上,每个具有3个不同数字的列表都是每行中可能的“行”...因此第0行可以是1,2,3或3,2,1或3, 1,2 ...
我需要做的是找到每列的所有可能列,这意味着循环遍历每个可能的行组合并从该行组合生成列。
如果有人知道我的意思并且可以更好地说出来,或者可以帮助我解决它,请做!我觉得像itertools.permutations会帮助我,但我无法弄清楚如何告诉它挑选每一行可能的行......
由于
答案 0 :(得分:0)
因此,如果不为您编写整个解决方案,我认为您可以相当容易,您只需要编写按您想要的顺序抓取列表的算法。让我看看我是否可以写一个小例子:
first loop through:
ixx xxx xxx
ixx xxx xxx
ixx xxx xxx
second loop through:
ixx xxx xxx
ixx xxx xxx
xix xxx xxx
third loop through:
ixx xxx xxx
ixx xxx xxx
xxi xxx xxx
在您最大的列表中,您可以使用y
,x
,z
坐标来获取每个字母,然后慢慢地x
和y
直到他们需要翻转并增加z
。
y x z
first_val = master_list[0][0][0] #1
second_val = master_list[1][0][0] #4
third_val = master_list[2][0][0] #8
然后你必须以同样的方式将三个val
放入一组类似的列表中。