0

我有一个列表列表,例如:

[ 
  [ 
    [ 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 会帮助我,但我不知道如何告诉它从每个可能的行中选择 1 个......

谢谢

4

1 回答 1

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,然后慢慢地获取xandy直到它们需要翻转和递增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相同的方式将三个 s 放入一组类似的列表中。

于 2013-04-01T00:04:37.577 回答