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.