Как можно сгенерировать список всех комбинаций цифр четырехзначного числа?

Как можно сгенерировать список всех комбинаций цифр четырехзначного числа?

Первый разряд может содержать 0. Есть 4 разряда, в каждом может стоять цифра от 0 до 9. Как я понимаю, это 10^4.

Как это можно реализовать?


Ответы (4 шт):

Автор решения: MrTwister
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.

→ Ссылка
Автор решения: MaxU

Для случая когда надо перебирать цифры десятичной системы, @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']
→ Ссылка
Автор решения: MBo

Если не мудрить, то требуется просто вывести строковое представление чисел до 9999 с ведущими нулями:

for i in range(10000):
    print('{:04d}'.format(i))
→ Ссылка
Автор решения: Victor VosMottor

Такой же О(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)))
→ Ссылка