logo

Permutacija i kombinacija u Pythonu

U ovom vodiču naučit ćemo kako dobiti permutaciju i kombinaciju danih podataka pomoću Pythona. Koristit ćemo Python ugrađeni paket da pronađemo permutaciju i kombinaciju zadanog broja.

Permutacije i kombinacije bitan su dio matematike. Piton pruža biblioteku itertools koja ima ugrađene funkcije za izračun permutacije i kombinacije.

Uvoz potrebne biblioteke

Da bismo izračunali permutaciju i kombinaciju, moramo uvesti biblioteku itertools. Možemo ga uvesti pomoću donje naredbe.

 import itertools 

Gornja izjava uvest će biblioteku itertools i formirati put do njezine funkcije.

Sada moramo kreirati popis niza kao ulaz. Ovaj popis ulaza vratit će torku koja se sastoji od permutacije i kombinacije. Također možemo postaviti duljinu permutacije i kombinacije.

Permutacija

Permutacija je raspored skupa gdje je red bitan. Python itertools modul pruža ugrađeni permutacija() metoda za pronalaženje permutacije. Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

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

U gornjem kodu smo uvezli modul itertools. Nazvali smo permutacija() metoda koja uzima niz kao argument i daje objekt itertools. Potrebno je koristiti for petlju da bi se dobila svaka permutacija.

Uzmimo dva skupa permutacija.

Primjer - 2

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

Izlaz:

instalacija baklje
 ('A', 'B') ('A', 'C') ('B', 'C') 

Primjer - 3

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

Izlaz:

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

U gornjem kodu imamo kombinaciju višestrukih cijelih brojeva.

Permutacija fiksne duljine

Možemo izračunati permutaciju skupa fiksne duljine gdje uzimamo samo određeni broj svake permutacije elementa. Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

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

U gornjem kodu, izračunali smo fiksnu permutaciju prosljeđivanjem duljine kao dva.

Kombinacija niza

Kombinacija je skup elemenata gdje redoslijed nije bitan. Piton itertools modul pruža kombinacija() metoda izračuna kombinacije danih podataka. Možemo izračunati kombinaciju niza. Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

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

Kombinacija sa zamjenom

Modul itertools sastoji se od druge metode tzv kombinacija_sa_zamjenom() koji uzima u obzir i kombinaciju samog broja. Razumimo njegov primjer.

Kombinacija numeričkog skupa

 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) 

Izlaz:

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

Kombinacija numeričkog skupa

Ako je dani unos u sortiranom redoslijedu, kombinirane torke će se vratiti u sortiranom redoslijedu. Razumimo sljedeći primjer.

Primjer -

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

Izlaz:

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

U ovom vodiču raspravljali smo o modulu itertools za pronalaženje permutacije i kombinacije zadanih podataka pomoću skripte Python.