Найти - Пользователи
Полная версия: Как можно сгенерировать список с определенными числами
Начало » Python для новичков » Как можно сгенерировать список с определенными числами
1
gratiani
Например 1 и 2 до четырехзначных значений.
1, 2, 11, 22, 12, 21, 111, 222, 112 и т.д.
Master_Sergius
Посмотрите на модуль itertools. Первое, что пришло на ум:

 numbers = [1,2,1,2]
for count in range(1,5):
    print set(list(itertools.combinations_with_replacement(numbers, count)))

Проверьте, все ли комбинации присутствуют
py.user.next
  
>>> 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']
>>>
Shaman
 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)
Stepan_M
Никаких itertools'ов, set'ов и переводов из строк в число. Только математика, только хардкор!
 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)
marvellik
Stepan_M
Никаких itertools'ов, set'ов
при заданном условии Например 1 и 2 до четырехзначных значений результат теряет 1111,1112,1122,1222
Stepan_M
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)
Так?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB