Как скомбинировать все возможные числа из числа путём перестановки местами двух чисел PYTHON

Шапка(у числа может быть неограниченное количество цифр, тоесть может быть и число как 923749237 или 12340 и т.д.) должна быть только 1 смена местами двух цифр например 12340 - 42310 помогите пожалуйста


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

Автор решения: Зарина
x = 12340
z = [int(y) for y in str(x)]    # раскладываем число в список, состоящий из цифр
index_max = z.index(max(z))     # запоминаем индекс самого большого элемента списка
max_elem = z.pop(index_max)     # удаляем этот элемент и запоминаем
first_elem = z.pop(0)           # удаляем нулевой элемент (значение 1)
z.insert(0, max_elem )          # вставляем на 0 элемент максимальное значение
z.insert(index_max, first_elem) # вставляем на место удаленного максимального значения значение 1
→ Ссылка
Автор решения: TigerTV.ru

Вот так можно:

from itertools import combinations 

a = "12340"
res = []
for i, j in combinations(range(len(a)), 2):
    *b, = a
    if b[i] != b[j]:
        b[i], b[j] = b[j], b[i]
        res.append(''.join(b))

print(res)
# ['21340', '32140', '42310', '02341', '13240', '14320', '10342', '12430', '12043', '12304']
→ Ссылка