A Python közvetlen módszereket kínál egy sorozat permutációinak és kombinációinak megtalálására. Ezek a módszerek az itertools csomagban vannak jelen.
A permutációs módszer pythoni implementálásához először importáljuk az itertools csomagot. Ez a metódus bemenetként egy listát fogad, és visszaad egy objektumlistát, amely az összes permutációt lista formájában tartalmazza.
from
itertools
import
permutations
perm
=
permutations()
for
i
in
list
(perm):
print
(i)
Kimenet:
(1, 2, 3)(1, 3, 2)(2, 1, 3)(2, 3, 1)(3, 1, 2)(3, 2, 1)
Ez n! permutációt generál, ha a bemeneti sorozat hossza n.
Ha L hosszúságú permutációkat akarunk kapni, akkor így valósítsuk meg.
from
itertools
import
permutations
perm
=
permutations(,
2
)
for
i
in
list
(perm):
print
(i)
Kimenet:
(1, 2)(1, 3)(2, 1)(2, 3)(3, 1)(3, 2)
Ez nCr * r! permutációkat generál, ha a bemeneti sorozat hossza n és a bemeneti paraméter r.
Ez a módszer egy listát és egy r bemenetet fogad el bemenetként, és visszaad egy objektumlistát, amely az összes lehetséges r hosszúságú kombinációt tartalmazza listaszerűen.
from
itertools
import
combinations
comb
=
combinations(,
2
)
for
i
in
list
(comb):
print
(i)
Kimenet:
(1, 2)(1, 3)(2, 3)
- A kombinációkat a bemenet lexikográfiai sorrendjében adjuk ki. Tehát ha a bemeneti lista rendezett, akkor a kombinációs tuplik is rendezett sorrendben fognak keletkezni.
from
itertools
import
combinations
comb
=
combinations(,
2
)
for
i
in
list
(comb):
print
(i)
Kimenet:
(2, 1)(2, 3)(1, 3)
- Az elemeket a pozíciójuk, nem pedig az értékük alapján tekintjük egyedinek. Tehát ha a bemeneti elemek egyediek, akkor nem lesznek ismétlődő értékek az egyes kombinációkban.
from
itertools
import
combinations
comb
=
combinations(,
2
)
for
i
in
list
(comb):
print
(i)
Kimenet:
(1, 1)(1, 3)(1, 3)
- Ha azonos elemet szeretnénk azonos elemmel kombinálni, akkor a combinations_with_replacement-t használjuk.
from
itertools
import
combinations_with_replacement
comb
=
combinations_with_replacement(,
2
)
for
i
in
list
(comb):
print
(i)
Kimenet:
(1, 1)(1, 2)(1, 3)(2, 2)(2, 3)(3, 3)
A cikk szerzője Raju Varshney. Kérjük, írjon megjegyzéseket, ha bármi hibát talál, vagy további információkat szeretne megosztani a fent tárgyalt témával kapcsolatban
Cikk címkék :
Gyakorlat Címkék :