Как правильно получить все комбинации чисел в Python
Потому что для вашей задачи вам нужно брать не combinations_with_replacement , а product :
import itertools for i in itertools.product('0123456789', repeat=4): print(''.join(i))
Комбинации в комбинаторике не учитывают порядка элементов. Поэтому набор тех же элементов будет считаться одной и той же комбинацией, даже если элементы в другом порядке. Ваш код один раз уже напечатал комбинацию из трёх нулей и одной единицы (0001), поэтому он не будет уже печатать другие варианты этой комбинации — 0010, 0100 и 1000. Аналогично и с другими числами.
Получаем все возможные комбинации из n элементов списка
Итак, нам необходимо вывести все вариации n элементов в некотором списке. Будем считать комбинации вида [a, b, c] и [c, b, a] одинаковыми.
С этой задачей справится модуль itertools и его функция combinations:
>>> import itertools >>> digits = [2,5,8,0] >>> list(itertools.combinations(digits, 3)) # получаем возможные комбинации [(2, 5, 8), (2, 5, 0), (2, 8, 0), (5, 8, 0)] >>> len(list(itertools.combinations(digits, 3))) # получаем количество комбинаций 4
Все комбинации чисел
1)Допустим у насть есть 6 чисель как создать код который покажет все комбинации , мы понимаем что таких комбинации будет 6! = 720
но как писать данный код?
Я новичок сорян за такой вопрос но очень интерсно)
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Найти все уникальные комбинации чисел
Не могу подобрать формулу для нахождения всех уникальных комбинации чисел. Я хочу вывести все.
Даны n чисел. Найти все возможные комбинации этих чисел
Помогите пожалуйста решить задачку. Даны n чисел, необходимо вывести на экран все возможные их.
Найти все комбинации чисел от 1 до N так, чтобы сумма чисел всех комбинаций была равна
Дана последовательность чисел от 1 до N. Найти все комбинации чисел от 1 до N так, чтобы сумма.

Все комбинации чисел от 1 до 4
Все комбинации чисел от 1 до 4. Как сделать:)? 1111, 1112, 1113, 1114, . 4443, 4444 -.
Регистрация: 07.04.2020
Сообщений: 63
1 2 3 4 5 6 7 8 9 10
m = ['1','2','3','4','5','6'] for a in m: for b in m: for c in m: for d in m: for e in m: for f in m: w = a+b+c+d+e+f if w.count('1')==1 and w.count('2')==1 and w.count('3')==1 and w.count('4')==1 and w.count('5')==1 and w.count('6')==1: print(w)
Сумбурно, конечно, но пойдет)
680 / 301 / 76
Регистрация: 10.04.2012
Сообщений: 1,131
Записей в блоге: 2

Сообщение было отмечено Rero_ как решение
Решение
1 2 3
from itertools import permutations for i in permutations('123456'): print(''.join(i))
2421 / 1463 / 633
Регистрация: 01.11.2021
Сообщений: 2,266
Просто Лис
![]()
5318 / 3332 / 1021
Регистрация: 17.05.2012
Сообщений: 9,765
Записей в блоге: 9
Сообщение от err 
if w.count(‘1’)==1 and w.count(‘2’)==1 and w.count(‘3’)==1 and w.count(‘4’)==1 and w.count(‘5’)==1 and w.count(‘6’)==1:
print(w)
Н-да, алгоритм со сложностью я ещё не видел
![]()
3172 / 1426 / 255
Регистрация: 18.01.2021
Сообщений: 2,772
Рыжий Лис, и не увидите. Здесь n^7 ))
Просто Лис
![]()
5318 / 3332 / 1021
Регистрация: 17.05.2012
Сообщений: 9,765
Записей в блоге: 9
А шесть вызовов count?
![]()
3172 / 1426 / 255
Регистрация: 18.01.2021
Сообщений: 2,772
Рыжий Лис, окей, n^8.
Хотя об асимптотике тут сложно что-либо говорить, ибо трудно представить, что это можно как-либо масштабировать
Просто Лис
![]()
5318 / 3332 / 1021
Регистрация: 17.05.2012
Сообщений: 9,765
Записей в блоге: 9
![]()
3172 / 1426 / 255
Регистрация: 18.01.2021
Сообщений: 2,772
Сообщение от Red white socks 
ибо трудно представить, что это можно как-либо масштабировать
Хотя что это я.
1 2 3 4 5 6
from itertools import product n=6 lst = list(range(n)) for x in product(lst, repeat=len(lst)): if all(x.count(i)==1 for i in lst): print(*x)
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Вывести все комбинации чисел от 1 до 4
Все комбинации чисел от 1 до 4. Как сделать? 1111, 1112, 1113, 1114, . 4443, 4444
Все возможные комбинации 5 чисел
В общем задача такая: Нужно, чтобы программа выдавала все возможные комбнации 5 чисел: 1 число от.

Все возможные комбинации чисел
Есть числа 1,2,3,7,8,9. Как вывести их все возможные комбинации, если известно что цифры не могут.
Перебрать все комбинации заданных чисел
Здравствуйте. Это легче показать на примере. Будет нагляднее. Например, в первой строке консоли.

Вывести все возможные комбинации чисел
Здравствуйте, помогите с задачкой пожалуйста. от 1-го до n нужно вывести все возможные варианты.
Получить все возможные комбинации чисел
Доброго дня! Подскажите, как реализовать макрос? есть такие числа: "1" — 46 раз "2" — 64 раза.

Найти все варианты комбинации чисел 0 1 2
Подскажите пожалуйста алгоритм, для генерации всех сочетаний, условия следующие: Есть число.
Поиск комбинаций в Python без использования itertools
Есть много случаев, когда нам нужно найти разные комбинации из одной строки или другого набора чисел. Чтобы найти такие комбинации в Python, у нас есть модуль itertools, наиболее распространенный для поиска различных комбинаций и перестановок.
Этот модуль очень эффективен и работает очень быстро, чтобы найти все возможные комбинации. Но функции модуля itertools – не единственный возможный метод, который мы можем использовать для поиска комбинаций.
В этом руководстве мы узнаем о различных методах, с помощью которых мы можем осуществить поиск различных комбинаций из строки в Python без использования itertools.
Комбинации в Python без использования itertools
В этом разделе мы напишем программы Python для поиска комбинаций, реализовав в них несколько методов. В нашей программе на Python мы будем использовать следующие методы:
- итерационный метод;
- метод рекурсии.
В обоих методах сначала мы посмотрим на программу и поймем, что она работает, а затем перейдем к объяснительной части, чтобы понять используемую в ней реализацию.
Поиск с помощью метода итерации
Чтобы реализовать итеративный подход в программе, мы должны импортировать библиотеку numpy, чтобы использовать ее функции.
# Import numpy module in program import numpy as np # Default function to use iterative approach def RecurCombo(iterArray, num): char = tuple(iterArray) # converting input string into a tuple m = len(char) # length of string or tuple if num > m: # checking if length of combinations is more than length of string return index = np.arange(num) # using numpy arrange() function # Yielding the first sequence yield tuple(char[i] for i in index) # Using while loop with true condition while True: # iterating over the tuple we made using reversed for loop for a in reversed(range(num)): if index[a] != a + m - num: break else: return index[a] += 1 # another for loop iteration for b in range(a + 1, num): index[b] = index[b - 1] + 1 yield tuple(char[a] for a in index) # yielding possible combinations from given string # Taking an input string from user inputArray = input("Enter an input string to find combinations: ") # Printing different combinations as result in output print("All possible combinations of three letter sets from the string given by you is: ") print([x for x in RecurCombo(inputArray, 3)])
Enter an input string to find combinations: JavaTpoint All possible combinations of three letter sets from the string given by you is: [('J', 'a', 'v'),('J', 'a', 'a'),('J', 'a', 'T'),('J', 'a', 'p'),('J', 'a', 'o'),('J', 'a', 'i'),('J', 'a', 'n'),('J', 'a', 't')]
Мы использовали метод итерации в приведенной выше программе, чтобы найти комбинации из входной строки.
Во-первых, мы использовали функцию Python по умолчанию с входной строкой и длиной комбинационного набора в качестве параметра. Затем мы преобразовали входную строку в кортеж. Также мы проверили, не превышает ли требуемая длина комбинации длину строки.
После этого мы использовали функцию order() numpy, чтобы установить индекс для кортежа. Мы собираемся перебирать кортеж с индексной переменной.
Затем мы перебирали кортеж, используя обратный цикл for и еще один цикл for внутри цикла while. После итерации в циклах мы получили возможные комбинации нужной длины.
Затем мы взяли строку ввода от пользователя. В последнем действии мы вернули комбинации трех наборов из входной строки.
Использование метода рекурсии
В подходе рекурсивного метода мы будем перебирать список, состоящий из списка строк. Давайте разберем это в следующем примере:
# Default Python function to use recursive approach def RecurCombo(array, num): if num == 0: return [[]] # if length for combination is 0 l =[] # list to printed in result # Using for loop to implement recursive approach for j in range(0, len(array)): emptyArray = array[j] # define an empty array to print list of sets recurList = array[j + 1:] # Recursion method on list defined in function for x in RecurCombo(recurList, num-1): l.append([emptyArray]+x) # appending list return l # list as result of recursion if __name__=="__main__": # Taking an input string from user inputArray = input("Enter an input string to find combinations: ") # Printing different combinations as result in output print("All possible combinations of three letter sets from the string given by you is: ") print(RecurCombo([a for a in inputArray], 3))
Enter an input string to find combinations: Python All possible combinations of three letter sets from the string given by you is: [['P', 'y', 't'], ['P', 'y', 'h'], ['P', 'y', 'o'], ['P', 'y', 'n'], ['P', 't', 'h'], ['P', 't', 'o'], ['P', 't', 'n'], ['P', 'h', 'o'], ['P', 'h', 'n'], ['P', 'o', 'n'], ['y', 't', 'h'], ['y', 't', 'o'], ['y', 't', 'n'], ['y', 'h', 'o'], ['y', 'h', 'n'], ['y', 'o', 'n'], ['t', 'h', 'o'], ['t', 'h', 'n'], ['t', 'o', 'n'], ['h', 'o', 'n']]
В приведенной выше программе при реализации рекурсивного подхода мы не использовали какой-либо конкретный модуль Python. Как и метод итерации, мы использовали функцию по умолчанию для реализации метода рекурсии в коде.
В этой программе мы использовали условие, чтобы проверить, требуется ли длина комбинации. Затем мы использовали метод рекурсии внутри функции с циклом for. После использования метода рекурсии мы возвращали комбинации необходимой длины из входной строки. Наконец, мы взяли строку в качестве ввода от пользователя и вернули на выходе комбинации из трех наборов.