logo

Пермутация и комбинация в Python

В този урок ще научим как да получим пермутация и комбинация от дадени данни с помощта на Python. Ще използваме вградения пакет на Python, за да намерим пермутацията и комбинацията на дадено число.

Пермутацията и комбинацията са съществена част от математиката. Python предоставя библиотеката itertools, която има вградените функции за изчисляване на пермутация и комбинация.

обхождане на двоично дърво по ред

Импортиране на необходимата библиотека

За да изчислим пермутацията и комбинацията, трябва да импортираме библиотеката itertools. Можем да го импортираме с помощта на командата по-долу.

 import itertools 

Горният израз ще импортира библиотеката itertools и ще формира път към нейната функция.

Сега трябва да създадем списъка с последователност като вход. Този списък с вход ще върне кортежа, който се състои от пермутация и комбинация. Можем също да зададем дължината на пермутацията и комбинацията.

Пермутация

Пермутацията е подреждане на набор, където редът има значение. Модулът itertools на Python осигурява вграден пермутация() метод за намиране на пермутацията. Нека разберем следния пример.

пример -

 from itertools import permutations seq = permutations(['1','2','3']) print(seq) for p in list(seq): print(p) 

Изход:

 ('1', '2', '3') ('1', '3', '2') ('2', '1', '3') ('2', '3', '1') ('3', '1', '2') ('3', '2', '1') 

В горния код ние импортирахме модула itertools. Обадихме се на пермутация() метод, който приема низ като аргумент и предоставя обект itertools. Необходимо е да използвате for цикъл, за да получите всяка пермутация.

Нека вземем два набора от пермутации.

Пример - 2

 from itertools import permutations seq = permutations(['A','B']) for p in list(seq): print(p) 

Изход:

 ('A', 'B') ('A', 'C') ('B', 'C') 

Пример - 3

 from itertools import permutations list1 = [1, 2, 3, 4] seq = permutations(list1) print(seq) for p in list(seq): print(p) 

Изход:

 (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) 

В горния код имаме комбинация от множествено цяло число.

Мадхубала

Пермутация на фиксираната дължина

Можем да изчислим пермутацията на набора с фиксирана дължина, където вземаме само определен брой от всяка пермутация на елемент. Нека разберем следния пример.

пример -

 from itertools import permutations seq = permutations(['H', 'e', 'l', 'l', 'o'], 3) for p in list(seq): print(p) 

Изход:

 ('H', 'e') ('H', 'l') ('H', 'l') ('H', 'o') ('e', 'H') ('e', 'l') ('e', 'l') ('e', 'o') ('l', 'H') ('l', 'e') ('l', 'l') ('l', 'o') ('l', 'H') ('l', 'e') ('l', 'l') ('l', 'o') ('o', 'H') ('o', 'e') ('o', 'l') ('o', 'l') 

В горния код сме изчислили фиксираната пермутация чрез предаване на дължина като две.

Комбинация от низ

Комбинацията е съвкупност от елемента, където редът няма значение. Python itertools модул предоставя комбинация() метод за изчисляване на комбинацията от дадени данни. Можем да изчислим комбинацията от низ. Нека разберем следния пример.

пример -

 import itertools seq = 'ABC' com_seq = itertools.combinations(seq, 2) for c in com_seq: print(c) 

Изход:

низ.подниз java
 ('A', 'B') ('A', 'C') ('B', 'C') 

Комбинация със замяна

Модулът itertools се състои от друг метод, наречен комбинация_със_замяна() който взема под внимание и комбинацията от самото число. Нека разберем неговия пример.

Комбинация от цифров набор

 from itertools import combinations_with_replacement com = combinations_with_replacement(['J', 'a', 'v', 'a', 't', 'p', 'o', 'i', 'n', 't'], 2) #Print the list of combinations for c in list(com): print(c) 

Изход:

 ('J', 'J') ('J', 'a') ('J', 'v') ('J', 'a') ('J', 't') ('J', 'p') ('J', 'o') ('J', 'i') ('J', 'n') ('J', 't') ('a', 'a') ('a', 'v') ('a', 'a') ('a', 't') ('a', 'p') ('a', 'o') ('a', 'i') ('a', 'n') ('a', 't') ('v', 'v') ('v', 'a') ('v', 't') ('v', 'p') ('v', 'o') ('v', 'i') ('v', 'n') ('v', 't') ('a', 'a') ('a', 't') ('a', 'p') ('a', 'o') ('a', 'i') ('a', 'n') ('a', 't') ('t', 't') ('t', 'p') ('t', 'o') ('t', 'i') ('t', 'n') ('t', 't') ('p', 'p') ('p', 'o') ('p', 'i') ('p', 'n') ('p', 't') ('o', 'o') ('o', 'i') ('o', 'n') ('o', 't') ('i', 'i') ('i', 'n') ('i', 't') ('n', 'n') ('n', 't') ('t', 't') 

Комбинация от цифров набор

Ако даденият вход е в сортиран ред, комбинираните кортежи ще бъдат върнати в сортиран ред. Нека разберем следния пример.

пример -

 import itertools v = [1, 2, 3, 4] com_seq = itertools.combinations_with_replacement(v, 3) for i in com_seq: print(i) 

Изход:

 (1, 1, 1) (1, 1, 2) (1, 1, 3) (1, 1, 4) (1, 2, 2) (1, 2, 3) (1, 2, 4) (1, 3, 3) (1, 3, 4) (1, 4, 4) (2, 2, 2) (2, 2, 3) (2, 2, 4) (2, 3, 3) (2, 3, 4) (2, 4, 4) (3, 3, 3) (3, 3, 4) (3, 4, 4) (4, 4, 4) 

В този урок обсъдихме модула itertools за намиране на пермутацията и комбинацията на дадените данни с помощта на скрипта на Python.