Вариации с повторением - PullRequest
       23

Вариации с повторением

2 голосов
/ 07 сентября 2011

Приведен список, например, два элемента l = [1,0] Мне нужно создать все возможные 5-элементные варианты с повторениями. Я пробовал использовать itertools.com, но дай мне то, что хотел.

С учетом n = 2 и k = 5 я должен получить 2^5 = 32 элементов, и результат должен выглядеть следующим образом:

results = [11111,11110,11101,11100,11001,11011,11010,...00000]

Ответы [ 2 ]

8 голосов
/ 07 сентября 2011
>>> import itertools
>>> ["".join(item) for item in itertools.product("10", repeat=5)]
['11111', '11110', '11101', '11100', '11011', '11010', '11001', '11000', '10111', 
'10110', '10101', '10100', '10011', '10010', '10001', '10000', '01111', '01110', 
'01101', '01100', '01011', '01010', '01001', '01000', '00111', '00110', '00101', 
'00100', '00011', '00010', '00001', '00000']
1 голос
/ 07 сентября 2011

Это эквивалентно циклу 0..k ^ n-1 и выводу текущего индекса в базе n. Что уменьшает вашу проблему до базового преобразования (что по сути эквивалентно длинному делению).

...