logo

Permutacija in kombinacija v Pythonu

V tej vadnici se bomo naučili, kako s Pythonom pridobiti permutacijo in kombinacijo danih podatkov. Za iskanje permutacije in kombinacije danega števila bomo uporabili vgrajeni paket Python.

Permutacija in kombinacija sta bistveni del matematike. Python ponuja knjižnico itertools, ki ima vgrajene funkcije za izračun permutacije in kombinacije.

Uvažanje zahtevane knjižnice

Za izračun permutacije in kombinacije moramo uvoziti knjižnico itertools. Lahko ga uvozimo s spodnjim ukazom.

 import itertools 

Zgornji stavek bo uvozil knjižnico itertools in oblikoval pot do njene funkcije.

Sedaj moramo ustvariti seznam zaporedja kot vhod. Ta seznam vnosov bo vrnil torko, ki je sestavljena iz permutacije in kombinacije. Nastavimo lahko tudi dolžino permutacije in kombinacije.

Permutacija

Permutacija je ureditev množice, kjer je vrstni red pomemben. Python itertools modul zagotavlja vgrajen permutacija() metoda za iskanje permutacije. Razumejmo naslednji primer.

Primer -

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

Izhod:

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

V zgornji kodi smo uvozili modul itertools. Poklicali smo permutacija() metoda, ki sprejme niz kot argument in zagotovi objekt itertools. Za pridobitev vsake permutacije je treba uporabiti zanko for.

vrednost niza java

Vzemimo dva niza permutacije.

Primer - 2

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

Izhod:

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

Primer - 3

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

Izhod:

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

V zgornji kodi imamo kombinacijo več celih števil.

Permutacija fiksne dolžine

Izračunamo lahko permutacijo niza fiksne dolžine, kjer vzamemo samo določeno število vsake permutacije elementa. Razumejmo naslednji primer.

Primer -

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

Izhod:

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

V zgornji kodi smo izračunali fiksno permutacijo s posredovanjem dolžine kot dve.

Kombinacija niza

Kombinacija je zbirka elementov, kjer vrstni red ni pomemben. Python itertools modul zagotavlja kombinacija() metoda za izračun kombinacije danih podatkov. Lahko izračunamo kombinacijo niza. Razumejmo naslednji primer.

Primer -

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

Izhod:

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

Kombinacija z zamenjavo

Modul itertools je sestavljen iz druge metode, imenovane kombinacija_z_zamenjavo() ki upošteva tudi kombinacijo števila. Razumejmo njegov primer.

Kombinacija številskega niza

 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) 

Izhod:

 ('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 številskega niza

Če je dani vnos v razvrščenem vrstnem redu, bodo kombinacijske tuple vrnjene v razvrščenem vrstnem redu. Razumejmo naslednji primer.

Primer -

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

Izhod:

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

V tej vadnici smo razpravljali o modulu itertools za iskanje permutacije in kombinacije danih podatkov s pomočjo skripta Python.