Вы можете сохранить два списка в одном списке, а затем после транспонирования списка контейнеров использовать itertools.product()
для него.
import itertools
original_list = [[1,2], [3,4]]
transposed_list = list(map(list, zip(*original_list)))
print(list(itertools.product(*transposed_list)))
Выходы: [(1, 2), (1, 4), (3, 2), (3, 4)]
РЕДАКТИРОВАТЬ |Объяснение того, как был транспонирован список:
По определению, транспонирование - это процесс обмена местами.
*original_list
означает [1,2]
и [3,4]
.Звездочка относится к элементам списка, а не к списку в целом
zip
в основном объединяет значения «поэлементно»: например, с нашими original_list
у нас есть [1,2]
и [3,4]
.Вызов zip для наших элементов приведет к (1,3)
и (2,4)
.Значения были спарены поэлементно.Обратите внимание, что полученные пары не представлены в виде списка.
map
применяет функцию к каждому элементу входного списка.В нашем примере мы хотим применить (встроенную) функцию list
к нашим поэлементным парам - т.е. преобразовать каждый кортеж пар в список.Это то, что превращает (1,3)
и (2,4)
в [1,3]
и [2,4]
Наконец, преобразуйте наш результат из отображения в содержащий список, удерживая наши поэлементные пары, получая [ [1,3], [2,4] ]