Извините, если на подобный вопрос уже был дан ответ, но я внимательно посмотрел и не нашел решения. Я относительно новичок в Pyhton.
Я пытаюсь создать матрицу индексов/координат для всех возможных двумерных списков (набор подсписков разного размера, список), чтобы учесть все возможные комбинации элементов.
Если бы мой список был [[A, B, C]]
, создаваемая матрица была бы [[0], [1], [2]]
, где первый и единственный элемент каждого списка относится к положению подсписка внутри списка. Если бы мой список был [[A, B, C], [A, B, C, D]]
, матрица должна была бы дать:
[[0, 0], [0, 1], [0, 2], [0, 3],
[1, 0], [1, 1], [1, 2], [1, 3],
[2, 0], [2, 1], [2, 2], [2, 3]]
И так далее. Каждый подсписок имеет длину, равную количеству подсписков в исходном списке. Содержимое начального списка не имеет значения, но порядок имеет значение, поскольку в результате позиция 0
каждого подсписка представляет собой координату элемента в подсписке 0
и так далее.
По сути, это представляет все комбинации элементов среди подсписков, что-то вроде декартова произведения.
Я предполагаю, что это можно сделать с помощью какого-то понимания списка, но не смог найти ответ.
[list(y) for y in itertools.product(*(range(len(x)) for x in lists))]
если вам нужен список списков 15.12.2014