Автор оригинала: Pankaj Kumar.
Перестановки и комбинации набора элементов представляют собой различные расположения элементов набора.
- Комбинация – это набор элементов, порядок которых не имеет значения
- Перестановка – это расположение множества, в котором порядок имеет значение.
Давайте рассмотрим набор как:
{A, B, C}
Перестановки приведенного выше набора следующие:
('A', 'B', 'C')
('A', 'C', 'B')
('B', 'A', 'C')
('B', 'C', 'A')
('C', 'A', 'B')
('C', 'B', 'A')
Комбинации вышеприведенного набора, когда два элемента взяты вместе, являются:
('A', 'B')
('A', 'C')
('B', 'C')
В этом уроке мы узнаем, как получить перестановки и комбинации группы элементов в Python. Мы рассмотрим наборы символов и цифр.
Мы будем использовать методы комбинации() и перестановки() в модуле itertools |/Python.
Давайте начнем.
Перестановки числовых данных
Чтобы использовать метод permutations () в модуле itertools, нам сначала нужно будет импортировать модуль.
import itertools
Теперь давайте определим набор чисел.
val = [1, 2, 3, 4]
Теперь, чтобы получить список перестановок, давайте воспользуемся методом перестановок ().
perm_set = itertools.permutations(val)
В приведенной выше строке кода приведен объект itertools. Чтобы напечатать различные перестановки, мы проведем итерацию по этому объекту.
for i in perm_set:
print(i)
Мы получаем результат в виде:
1 2 3 4 1 2 4 3 1 3 2 4 1 3 4 2 1 4 2 3 1 4 3 2 2 1 3 4 2 1 4 3 2 3 1 4 2 3 4 1 2 4 1 3 2 4 3 1 3 1 2 4 3 1 4 2 3 2 1 4 3 2 4 1 3 4 1 2 3 4 2 1 4 1 2 3 4 1 3 2 4 2 1 3 4 2 3 1 4 3 1 2 4 3 2 1
Полный код для этого раздела приведен ниже:
import itertools
val = [1, 2, 3, 4]
perm_set = itertools.permutations(val)
for i in perm_set:
print(i)
Перестановки строки
Далее мы узнаем, как получить перестановки символов в строке.
Мы будем использовать метод перестановок (), но на этот раз мы передадим строку в качестве аргумента.
import itertools
s = "ABC"
perm_set = itertools.permutations(s)
for val in perm_set:
print(val)
Выход:
('A', 'B', 'C')
('A', 'C', 'B')
('B', 'A', 'C')
('B', 'C', 'A')
('C', 'A', 'B')
('C', 'B', 'A')
Перестановки фиксированной длины
Мы можем найти перестановки множества, в которых мы берем только определенное количество элементов в каждой перестановке. Это похоже на nPr в области математики.
Код для поиска перестановок фиксированной длины приведен ниже:
import itertools
val = [1, 2, 3, 4]
perm_set = itertools.permutations(val,2)
for i in perm_set:
print(i)
Выход:
(1, 2) (1, 3) (1, 4) (2, 1) (2, 3) (2, 4) (3, 1) (3, 2) (3, 4) (4, 1) (4, 2) (4, 3)
Комбинации числовых данных
Так же, как и в методе перестановок (), мы можем использовать комбинации (), также в разделе itertools, чтобы получить комбинации набора.
При вызове combinations() нам нужно передать два аргумента: набор для поиска комбинаций и число, обозначающее длину каждой комбинации.
import itertools
val = [1, 2, 3, 4]
com_set = itertools.combinations(val, 2)
for i in com_set:
print(i)
Выход:
(1, 2) (1, 3) (1, 4) (2, 3) (2, 4) (3, 4)
Комбинации строк
Мы также можем получить комбинации строк. Чтобы получить комбинации строк, используйте следующий фрагмент кода:
import itertools
s = "ABC"
com_set = itertools.combinations(s, 2)
for i in com_set:
print(i)
Выход:
('A', 'B')
('A', 'C')
('B', 'C')
Комбинации с заменами
В модуле itertools есть еще один метод, называемый combinations_with_replacement(). Этот метод также учитывает комбинацию числа с самим собой.
Давайте посмотрим, как это работает.
Для числового набора
import itertools
val = [1, 2, 3, 4]
com_set = itertools.combinations_with_replacement(val, 2)
for i in com_set:
print(i)
Выход:
(1, 1) (1, 2) (1, 3) (1, 4) (2, 2) (2, 3) (2, 4) (3, 3) (3, 4) (4, 4)
Вы можете видеть разницу в выводе выше и выводе для работы обычной комбинации. Здесь у нас есть комбинации, такие как (1,1) и (2,2), которых нет в обычных комбинациях.
Для строки
import itertools
val = "ABCD"
com_set = itertools.combinations_with_replacement(val, 2)
for i in com_set:
print(i)
Выход:
('A', 'A')
('A', 'B')
('A', 'C')
('A', 'D')
('B', 'B')
('B', 'C')
('B', 'D')
('C', 'C')
('C', 'D')
('D', 'D')
Вывод
Этот учебник был посвящен поиску перестановок и комбинаций набора в python. Мы использовали модуль itertools, доступный в python, для поиска перестановок и комбинаций.