Я в основном ищу Python версию комбинацииList<List<int>>
Учитывая список списков, мне нужен новый список, который дает все возможные комбинации элементов между списками.
[[1,2,3],[4,5,6],[7,8,9,10]] -> [[1,4,7],[1,4,8],...,[3,6,10]]
Количество списков неизвестно, поэтому мне нужно что-то, что работает для всех случаев. Бонусные баллы за элегантность!
*a
?*a
означает, что это аргументы, передаваемые в функцию или метод.def fn(a,b,c):
ответил бы наfn(*[1,2,3])
ссылкуa
качестве входных данных, выполняет итерациюitertools.product(*a)
и выводит какyield
кортеж, созданный, такitertools
и обратную версию ( например, создать списокreverse()
и преобразовать его обратно в кортеж). Лучше всего задать новый вопрос.Наиболее элегантным решением является использование itertools.product в Python 2.6.
Если вы не используете Python 2.6, документы для itertools.product фактически показывают эквивалентную функцию, чтобы сделать продукт «ручным» способом:
источник
Я надеюсь, что вы найдете это так же элегантно, как и я, когда я впервые столкнулся с этим.
источник
Numpy может сделать это:
источник
Нет ничего плохого в прямой рекурсии для этой задачи, и если вам нужна версия, которая работает со строками, это может соответствовать вашим потребностям:
источник
Для этого можно использовать базовый питон. В коде нужна функция для выравнивания списков списков:
Тогда можно запустить:
Вывод:
источник
Вывод:
источник