2013-08-12 2 views
1

Я использовал itertools для запуска перестановки в списке, который у меня есть.Перестановка с избыточными перекрытиями? Python

mylist = [a, b, c, d, e, f] 
mypermutations = itertools.permutations(mylist,2)  
mypermutations_list = list(mypermutations) 
print mypermutations_list 

печатает:

[(a, b), (a, c), (a, d)...] 

Однако список перестановок не включает (a, a), (b, b), и т.д. Я понимаю, что это, вероятно, потому, что большинство людей не хотят таких избыточных спариваний. Тем не менее, я хотел бы включить такие пары как элемент управления для программы, которую я пишу.

Есть ли способ запустить перестановку и получить эти комбинации? Я понятия не имею, что использовать вместо перестановок.

ответ

1

Вы ищете itertools.product, он возвращает декартово произведение итерации:

>>> from itertools import product 
>>> list(product('abcdef', repeat=2)) 
[('a', 'a'), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('a', 'e'), ('a', 'f'), ('b', 'a'), ('b', 'b'), ('b', 'c'), ('b', 'd'), ('b', 'e'), ('b', 'f'), ('c', 'a'), ('c', 'b'), ('c', 'c'), ('c', 'd'), ('c', 'e'), ('c', 'f'), ('d', 'a'), ('d', 'b'), ('d', 'c'), ('d', 'd'), ('d', 'e'), ('d', 'f'), ('e', 'a'), ('e', 'b'), ('e', 'c'), ('e', 'd'), ('e', 'e'), ('e', 'f'), ('f', 'a'), ('f', 'b'), ('f', 'c'), ('f', 'd'), ('f', 'e'), ('f', 'f')] 
+0

вау, это было просто! Спасибо большое! – user2586260

Смежные вопросы