Di Python kita sanggup dengan gampang mencari permutasi dan kombinasi. Python menyediakan metode eksklusif untuk mendapatkan permutasi dan kombinasi dari suatu sequence. Metode ini terdapat di dalam paket itertools.

Permutasi

Pertama sekali untuk sanggup melaksanakan permutasi di Python kita harus mengimpor fungsi permutations dari paket itertools. Fungsi permutations() mendapatkan argumen list sebagai input dan mengembalikan sebuah list berisi semua permutasi yang mungkin.

 
# Program Python untuk mencetak semua
# permutasi memakai fungsi dari library python
from itertools import permutations

# Mendapatkan semua permutasi dari [1, 2, 3]
perm = permutations([1, 2, 3])

# Print semua permutasi
for i in perm:
print(i)

Output

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

Fungsi permutasi membangkitkan permutasi n! bila banyak anggota = n.

Jika kita menginginkan permutasi dengan panjang yang ditentukan, maka caranya ialah sebagai berikut:

 
# Program Python untuk mencetak semua
# permutasi dengan panjang ditentukan
from itertools import permutations

# Mendapatkan semua permutasi dari [1, 2, 3]
perm = permutations([1, 2, 3],2)

# Print semua permutasi
for i in perm:
print(i)

Output

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

 


Kombinasi

Fungsi combinations mendapatkan argumen list dan sebuah bilangan r, dan mengembalikan daftar tuple dari semua kombinasi dengan panjang r yang mungkin.

 
# Program Python untuk mencetak semua
# kombinasi dengan panjang tertentu
from itertools import combinations

# Mendapatkan semua kombinasi dari [1, 2, 3]
# dengan panjang 2
comb = combinations([1, 2, 3], 2)

# Print semua kombinasi
for i in comb:
print(i)

Output

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


Kombinasi secara default akan ditampilkan sesuai dengan urutan inputnya. Jadi, bila list input diurutkan, maka hasil kombinasinya akan terurut juga.

 
# Program Python untuk menampilkan semua kombinasi
# dari input yang tidak berurut
from itertools import combinations

# Mendapatkan kombinasi dari [2, 1, 3]
# dan panjang 2
comb = combinations([2, 1, 3], 2)

# Menampilkan kombinasi
for i in comb:
print(i)

Output

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


Pada kombinasi, semua elemen diperlakukan unik sesuai posisinya, dan bukan menurut nilainya. Jadi, bila elemen inputnya unik, tidak ada nilai yang berulang ditiap kombinasi.

 

 
# Program Python untuk menampilkan semua kombinasi
# dengan elemen yang sama
from itertools import combinations

# Mendapatkan kombinasi dari [1, 1, 3]
# dan panjang 2
comb = combinations([1, 1, 3], 2)

# Menampilkan kombinasi
for i in comb:
print(i)

Output

(1, 1)
(1, 3)
(1, 3)


Jika kita menginginkan kombinasi yang elemennya sama, kita sanggup memakai fungsi combinations_with_replacement()

 
# Program Python untuk menampilkan semua kombinasi
# dengan mengizinkan kombinasi anggota yang sama
from itertools import combinations_with_replacement

# Mendapatkan kombinasi dari [1, 1, 3]
# dan panjang 2
comb = combinations_with_replacement([1, 2, 3], 2)

# Menampilkan kombinasi
for i in comb:
print(i)

Output

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