1, 2, 11, 22, 12, 21, 111, 222, 112 и т.д.
1, 2, 11, 22, 12, 21, 111, 222, 112 и т.д.
numbers = [1,2,1,2] for count in range(1,5): print set(list(itertools.combinations_with_replacement(numbers, count)))
>>> import itertools >>> >>> it = (itertools.product('12', repeat=i) for i in range(1, 5)) >>> out = list(map(''.join, itertools.chain.from_iterable(it))) >>> out ['1', '2', '11', '12', '21', '22', '111', '112', '121', '122', '211', '212', '221', '222', '1111', '1112', '1121', '1122', '1211', '1212', '1221', '1222', '2111', '2112', '2121', '2122', '2211', '2212', '2221', '2222'] >>>
def countanybase(digits, number_): number = list(number_) for i, d in list(enumerate(number))[-1::-1]: if d != digits[-1]: number[i] = digits[digits.find(d) + 1] number[i + 1:] = [digits[0]] * (len(number) - i - 1) break else: number = [digits[1]] + [digits[0]] * len(number) return ''.join(number) number = '1' for i in range(15): number = countanybase('12', number) print(number)
NUMBERS = [5, 3, 8] # определенные числа N = 3 # максимальная разрядность x = NUMBERS[:] for i in range(N - 1): x += [j * 10 + k for j in x[-len(NUMBERS * i):] for k in NUMBERS] print(x)
Stepan_Mпри заданном условии Например 1 и 2 до четырехзначных значений результат теряет 1111,1112,1122,1222
Никаких itertools'ов, set'ов
marvellikТочно. Попробую поправить…
при заданном условии Например 1 и 2 до четырехзначных значений результат теряет 1111,1112,1122,1222
NUMBERS = [1, 2, 3] # определенные числа N = 5 # максимальная разрядность x = NUMBERS[:] for i in range(1, N): x += [j * 10 + k for j in x[-len(NUMBERS) ** i:] for k in NUMBERS] print(x)