Ok. Я ищу самый умный и более компактный способ сделать эту функциюPython: Генерирование всех массивов n-длины комбинаций значений в диапазоне
def f():
[[a,b,c] for a in range(6) for b in range(6) for c in range(6)]
, которые должны генерировать все комбинации для значений а, b, c нравится:
[0,0,0]
[0,0,1]
[0,0,2]
...
[1,0,0]
[1,0,1]
...
и так далее. ..
Но я хочу, чтобы это было гибким, поэтому я могу изменить диапазон или итерабельность, а также длину сгенерированных массивов. Диапазон легкая вещь:
def f(min, max):
[[a,b,c] for a in range(min,max) for b in range(min,max) for c in range(min,max)]
Это нормально для 3 длины массивов, но я думаю, теперь делают массивы 4 длины или 7 длиной массивы и генерировать все комбинации для них в том же диапазоне.
Он должен существовать простым способом, возможно, с конкатенацией массивов или списками понимания гнездования в некотором роде, но мои решения кажутся слишком сложными.
Извините за такой длинный пост.
Параметр 'itertools' модуль имеет' функцию product', которая делает именно то, что вы «Ищем. 'из продукта импорта itertools; продукт (диапазон (6), диапазон (6), диапазон (6)) '. Какой бы итератор не помещал последние циклы быстрее. – Elliot