Как можно сгенерировать список всех комбинаций цифр четырехзначного числа?
Как можно сгенерировать список всех комбинаций цифр четырехзначного числа?
Первый разряд может содержать 0. Есть 4 разряда, в каждом может стоять цифра от 0 до 9. Как я понимаю, это 10^4.
Как это можно реализовать?
Ответы (4 шт):
out = []
for i in range(10):
for k in range(10):
for n in range(10):
for h in range(10):
out.append(str(i)+str(k)+str(n)+str(h))
print(out)
Получается список из строк, при необходимости также переводится в int.
Для случая когда надо перебирать цифры десятичной системы, @Mbo показал самый простой и оптимальный вариант.
Если же надо перебирать другие символы, например буквы алфавита или цифры шестнадцатиричной системы, то можно воспользоваться универсальным вариантом:
from itertools import product
N = 4
res = list(map("".join, product(*[list("0123456789")] * N)))
In [37]: len(res)
Out[37]: 10000
Пример с буквами:
In [60]: alphabet = "abc"
In [61]: N = 3
In [62]: res = list(map("".join, product(*[list(alphabet)] * N)))
In [63]: res
Out[63]:
['aaa',
'aab',
'aac',
'aba',
'abb',
'abc',
'aca',
'acb',
'acc',
'baa',
'bab',
'bac',
'bba',
'bbb',
'bbc',
'bca',
'bcb',
'bcc',
'caa',
'cab',
'cac',
'cba',
'cbb',
'cbc',
'cca',
'ccb',
'ccc']
Если не мудрить, то требуется просто вывести строковое представление чисел до 9999 с ведущими нулями:
for i in range(10000):
print('{:04d}'.format(i))
Такой же О(n^4) как у @MrTwister, но зато в одну строчку ;)
print(*(int(str(i) + str(j) + str(k) + str(n)) for i in range(10) for j in range(10) for k in range(10) for n in range(10)))