Permutasi string adalah mengubah urutan atau pengaturan karakter yang terdiri dari string. Mengingat bahwa n adalah jumlah karakter, ada n. cara yang berbeda untuk mengubah urutan string yang diberikan
Posting ini menunjukkan bagaimana kita dapat mengubah ulang sebuah string dengan Python 3
Tanpa mengimpor pustaka Python 3 apa pun
Mencetak permutasi string yang berbeda dengan duplikat
def permutate_string(string, prefix = ''): if len(string) == 0: print(prefix) else: for i in range(len(string)): rem = string[0:i] + string[i+1:] permutate_string(rem, prefix + string[i]) permutate_string('abb') ''' Output: abb abb bab bba bab bba '''Mengumpulkan permutasi string yang berbeda dengan duplikat dalam daftar
def build_permutation_list(string, prefix='', permutation_list=[]): if len(string) == 0: permutation_list.append(prefix) else: for i in range(len(string)): rem = string[0:i] + string[i + 1:] build_permutation_list(rem, prefix + string[i], permutation_list) permutation_list = [] build_permutation_list('abb', permutation_list=permutation_list) # permutation_list will contain the list of string variations from this point on _Mengumpulkan permutasi string yang berbeda tanpa duplikat dalam daftar
permutation_list = [] build_permutation_list('abb', permutation_list=permutation_list) permutation_list = set(permutation_list)Dengan itertools. fungsi perpustakaan permutasi
Mencetak permutasi string yang berbeda dengan duplikat
from itertools import permutations string_permutations = permutations('abb') for string in string_permutations: print(''.join(string)) ''' Output: abb abb bab bba bab bba '''Mencetak permutasi string yang berbeda tanpa duplikat
from itertools import permutations # Use the set function to remove duplicates string_permutations = set(permutations('abb')) for string in string_permutations: print(''.join(string)) ''' Output: bba bab abb ''' _- Membagikan
- Menciak
- Membagikan
- Menyimpan
Dengan permutasi, yang kami maksud adalah jumlah total penataan ulang yang mungkin untuk sejumlah elemen tertentu dengan cara yang unik tanpa mempertimbangkan urutan penataan ulang
Sebuah string, seperti yang kita ketahui, dapat dianggap sebagai kumpulan karakter individu
Pada artikel ini, kami akan mencoba menemukan semua kemungkinan permutasi untuk string tertentu
Modul itertools_ digunakan untuk membuat dan bekerja dengan berbagai objek iterable. Fungsi permutations()_ dari modul ini dapat mengembalikan semua pengaturan yang mungkin untuk sekumpulan nilai tertentu
Ini mengembalikan objek tipe itertools_ yang berisi tuple yang berisi kemungkinan susunan elemen. Kita dapat menggunakan daftar untuk melihat elemen objek ini. Kita bisa menggunakan fungsi ini dengan string juga
Sebagai contoh,
from itertools import permutations lst = list(permutations('day')) print(lst)
Keluaran
[('d', 'a', 'y'), ('d', 'y', 'a'), ('a', 'd', 'y'), ('a', 'y', 'd'), ('y', 'd', 'a'), ('y', 'a', 'd')] _
Perhatikan tupel yang dibuat pada keluaran yang berisi susunan karakter. Kita dapat mengubahnya menjadi daftar string menggunakan fungsi join() dan metode pemahaman daftar
Lihat kode berikut
from itertools import permutations lst = [''.join(p) for p in permutations('day')] print(lst)
Keluaran
['day', 'dya', 'ady', 'ayd', 'yda', 'yad'] _
Kami menggabungkan elemen tuple menggunakan fungsi join() dan menggunakan ini untuk setiap tupel dengan mengulangi daftar
Buat Fungsi yang Ditentukan Pengguna untuk Mengembalikan Semua Permutasi untuk sebuah String dengan Python
Kita dapat membuat fungsi langsung untuk menemukan semua permutasi string. Kami akan membuat fungsi rekursif. Dalam metode ini, kita hanya akan menukar elemen string satu kali dan memanggil kembali fungsi tersebut dengan susunan baru. Kami menampilkan pengaturan akhir
Kami menerapkan logika di atas dalam kode berikut
def string_permutations(s, i, n): if i==n: print(''.join(s) ) else: for j in range(i,n): s[i], s[j] = s[j], s[i] string_permutations(s, i+1, n) s[i], s[j] = s[j], s[i] a = "day" x = len(a) s = list(a) print(permute(s, 0, x)) _
Keluaran
Seperti yang Anda lihat, posisi awal dan akhir ditentukan di mana kami ingin menyelesaikan pengaturan ulang. String juga diteruskan sebagai daftar karakter. Untuk menemukan semua permutasi yang mungkin, kami menetapkan awal ke 0 dan akhir sebagai panjang string