Сгенерировать двумерный двумерный массив из заданных массивов диапазонов

#python #arrays #loops #multidimensional-array

#python #массивы #циклы #многомерный массив

Вопрос:

Предположим, у меня есть список списков, подобных этому:

 list = [[1, 2, 3],
        [4, 5, 6, 7],
        [3, 4]]
 

Я хочу создать двумерный массив, подобный этому, используя приведенный выше ввод в Python:

 result = [[1,4,3],[1,4,4],[1,5,3],[1,5,4],[1,6,3],[1,6,4],[1,7,3],[1,7,4],
[2,4,3],[2,4,4],[2,5,3],[2,5,4],[2,6,3],[2,6,4],[2,7,3],[2,7,4],
[3,4,3],[3,4,4],[3,5,3],[3,5,4],[3,6,3],[3,6,4],[3,7,3],[3,7,4]]
 

Это своего рода таблица истинности.

Примечание — Длина списка может варьироваться (он может содержать больше списков), а также длина внутренних списков может меняться.

Ответ №1:

Вы можете использовать itertools.product() . l — ваш исходный список (избегайте использования «list» в качестве имени из-за существующей встроенной структуры данных в python)

 res=[list(i) for i in itertools.product(*l)]

>>> print(res)

[[1, 4, 3], [1, 4, 4], [1, 5, 3], [1, 5, 4], [1, 6, 3], [1, 6, 4], [1, 7, 3], [1, 7, 4], [2, 4, 3], [2, 4, 4], [2, 5, 3], [2, 5, 4], [2, 6, 3], [2, 6, 4], [2, 7, 3], [2, 7, 4], [3, 4, 3], [3, 4, 4], [3, 5, 3], [3, 5, 4], [3, 6, 3], [3, 6, 4], [3, 7, 3], [3, 7, 4]]