Я знаю о itertools, но кажется, что это может только генерировать перестановки без повторений.
Например, я хотел бы генерировать все возможные броски костей для 2 игр в кости. Таким образом, мне нужны все перестановки размера 2 из [1, 2, 3, 4, 5, 6] включая повторения: (1, 1), (1, 2), (2, 1)... и т.д.
Если возможный я не хочу реализовывать это с нуля
В этом случае понимание списка не особенно необходимо.
, Учитывая [1 118]
import itertools as it
iter_ = range(1, 7)
r = 2
Код
list(it.product(iter_, repeat=r))
<час> Детали
Неочевидно, Декартово произведение может генерировать подмножества перестановок. Однако из этого следует, что:
product
Перестановки с заменой, n ** перестановки r
[x for x in it.product(iter_, repeat=r)]
без замены, n!
[x for x in it.product(iter_, repeat=r) if len(set(x)) == r]
# Equivalent
list(it.permutations(iter_, r))