logo

Permutācija un kombinācija Python

Šajā apmācībā mēs uzzināsim, kā iegūt doto datu permutāciju un kombināciju, izmantojot Python. Mēs izmantosim Python iebūvēto pakotni, lai atrastu dotā skaitļa permutāciju un kombināciju.

Permutācija un kombinācija ir būtiska matemātikas sastāvdaļa. Python nodrošina itertools bibliotēku, kurā ir iebūvētas funkcijas, lai aprēķinātu permutāciju un kombināciju.

Nepieciešamās bibliotēkas importēšana

Lai aprēķinātu permutāciju un kombināciju, mums ir jāimportē itertools bibliotēka. Mēs varam to importēt, izmantojot tālāk norādīto komandu.

 import itertools 

Iepriekš minētais paziņojums importēs itertools bibliotēku un veido ceļu uz tās funkciju.

Tagad mums ir jāizveido secības saraksts kā ievade. Šis ievades saraksts atgriezīs virkni, kas sastāv no permutācijas un kombinācijas. Mēs varam arī iestatīt permutācijas un kombinācijas garumu.

Permutācija

Permutācija ir kopas izkārtojums, kurā secībai ir nozīme. Python itertools modulis nodrošina iebūvētu permutācija() metode, lai atrastu permutāciju. Sapratīsim šādu piemēru.

Piemērs -

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

Izvade:

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

Iepriekš minētajā kodā mēs esam importējuši itertools moduli. Mēs piezvanījām permutācija() metode, kas izmanto virkni kā argumentu un nodrošina itertools objektu. Lai iegūtu katru permutāciju, ir jāizmanto cilpa.

Ņemsim divas permutāciju kopas.

Piemērs - 2

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

Izvade:

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

Piemērs - 3

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

Izvade:

cast string kā int
 (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) 

Iepriekš minētajā kodā mēs esam ieguvuši vairāku veselu skaitļu kombināciju.

Fiksētā garuma permutācija

Mēs varam aprēķināt fiksētā garuma kopas permutāciju, kur mēs ņemam tikai noteiktu skaitu katra elementa permutācijas. Sapratīsim šādu piemēru.

Piemērs -

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

Izvade:

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

Iepriekš minētajā kodā mēs esam aprēķinājuši fiksēto permutāciju, nododot garumu kā divi.

Stīgu kombinācija

Kombinācija ir elementu kolekcija, kuras secībai nav nozīmes. Python itertorīki modulis nodrošina kombinācija () metode doto datu kombinācijas aprēķināšanai. Mēs varam aprēķināt virknes kombināciju. Sapratīsim šādu piemēru.

Piemērs -

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

Izvade:

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

Kombinācija ar nomaiņu

Itertools modulis sastāv no citas metodes, ko sauc kombinācija_ar_aizvietošanu() kurā tiek ņemta vērā arī pati skaitļa kombinācija. Sapratīsim tās piemēru.

Ciparu kopas kombinācija

 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) 

Izvade:

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

Ciparu kopas kombinācija

Ja dotā ievade ir sakārtotā secībā, kombināciju korteži tiks atgriezti sakārtotā secībā. Sapratīsim šādu piemēru.

Piemērs -

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

Izvade:

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

Šajā apmācībā mēs esam apsprieduši itertools moduli, lai atrastu doto datu permutāciju un kombināciju, izmantojot Python skriptu.