Автор оригинала: 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, для поиска перестановок и комбинаций.