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.
fromitertoolsimportcombinationscomb=combinations(,2)foriinlist(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.
fromitertoolsimportcombinationscomb=combinations(,2)foriinlist(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.
fromitertoolsimportcombinations_with_replacementcomb=combinations_with_replacement(,2)foriinlist(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 :