logo

Permutace a kombinace v Pythonu

V tomto tutoriálu se naučíme, jak získat permutaci a kombinaci daných dat pomocí Pythonu. K nalezení permutace a kombinace daného čísla použijeme vestavěný balíček Pythonu.

Permutace a kombinace jsou nezbytnou součástí matematiky. Krajta poskytuje knihovnu itertools, která má vestavěné funkce pro výpočet permutace a kombinace.

Import požadované knihovny

Pro výpočet permutace a kombinace potřebujeme importovat knihovnu itertools. Můžeme jej importovat pomocí níže uvedeného příkazu.

 import itertools 

Výše uvedený příkaz naimportuje knihovnu itertools a vytvoří cestu k její funkci.

Nyní musíme vytvořit seznam sekvence jako vstup. Tento seznam vstupů vrátí n-tici, která se skládá z permutace a kombinace. Můžeme také nastavit délku permutace a kombinace.

negace diskrétní matematika

Permutace

Permutace je uspořádání množiny, kde na pořadí záleží. Python modul itertools poskytuje vestavěný modul permutace() metoda k nalezení permutace. Pojďme pochopit následující příklad.

Příklad -

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

Výstup:

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

Ve výše uvedeném kódu jsme importovali modul itertools. Zavolali jsme na permutace() metoda, která bere řetězec jako argument a poskytuje objekt itertools. Pro získání každé permutace je nutné použít cyklus for.

if příkaz java

Vezměme si dvě sady permutací.

Příklad - 2

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

Výstup:

multithreading v Javě
 ('A', 'B') ('A', 'C') ('B', 'C') 

Příklad - 3

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

Výstup:

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

Ve výše uvedeném kódu máme kombinaci vícenásobného celého čísla.

Permutace pevné délky

Můžeme vypočítat permutaci množiny pevné délky, kde vezmeme pouze zadaný počet permutací každého prvku. Pojďme pochopit následující příklad.

Příklad -

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

Výstup:

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

Ve výše uvedeném kódu jsme vypočítali pevnou permutaci předáním délky jako dvě.

c++ rozdělení řetězce

Kombinace řetězce

Kombinace je soubor prvků, kde na pořadí nezáleží. Krajta itertools modul poskytuje kombinace() způsob výpočtu kombinace daných dat. Můžeme vypočítat kombinaci řetězce. Pojďme pochopit následující příklad.

Příklad -

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

Výstup:

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

Kombinace s výměnou

Modul itertools se skládá z další metody tzv combination_with_replacement() který bere v úvahu i kombinaci samotného čísla. Pojďme pochopit jeho příklad.

bublinové řazení v Javě

Kombinace číselné sady

 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) 

Výstup:

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

Kombinace číselné sady

Pokud je daný vstup v seřazeném pořadí, budou kombinované n-tice vráceny v seřazeném pořadí. Pojďme pochopit následující příklad.

Příklad -

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

Výstup:

 (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 tomto tutoriálu jsme probrali modul itertools pro nalezení permutace a kombinace daných dat pomocí skriptu Python.