Создайте возможные комбинации и получите только первые 50
Я ищу способ получить первые 50 только из возможных комбинаций (20 фиксированной длины) с условиями, но я не могу найти то, что я ищу. У меня есть пример ниже.
import itertools
a = array([1,2,5])
b = array([8,9,10])
c = 0
if c == 1:
x = a
y = b
else:
x = b
y = a
mylist = list(itertools.product(x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y))
Мой вывод будет:
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1)
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 2)
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 5)
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 2 8 1)
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 2 8 2)
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 2 8 5)
.
.
и так далее..
Я уже столкнулся с ошибкой памяти. Я думаю, что здесь слишком много комбинаций, поэтому я хочу получить только первые 50. Есть ли способ сделать это?
Заранее спасибо!
1 ответ
Решение
Оставаться с itertools
использовать islice
:
list(itertools.islice(itertools.product(x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y), 50))
это берет первые 50 элементов из product
и преобразует их в список.