Sebelumnya. Tulis program Python untuk membagi daftar yang diberikan menjadi potongan berukuran tertentu menggunakan modul itertools
Lanjut. Tulis program Python untuk membuat grup item serupa dari daftar yang diberikanBerapa tingkat kesulitan latihan ini?
Mudah Sedang KerasUji keterampilan Pemrograman Anda dengan kuis w3resource
Ikuti kami di Facebook dan Twitter untuk pembaruan terbaru.
Piton. Kiat Hari Ini
Irisan
Slice adalah objek sehingga dapat disimpan dalam variabel. Beberapa struktur data memungkinkan pengindeksan dan pemotongan seperti daftar, string, dan tupel
Kita dapat menggunakan bilangan bulat untuk menentukan batas atas dan bawah dari irisan atau menggunakan objek irisan
s = slice[4,8] lst = [1, 3, 'w', '3', 'r', 11, 16] text = 'w3resource' tpl = [2,4,6,8,10,12,14] print[lst[s]] print[text[s]] print[tpl[s]]
Keluaran
['r', 11, 16] sour [10, 12, 14]_
Irisan s mewakili irisan dari elemen keempat hingga elemen keenam. Kami menerapkan objek irisan yang sama ke daftar, string, dan tupel
Misalkan kita memiliki string s. Kita harus menemukan semua kemungkinan kombinasi huruf s. Jika ada dua string dengan kumpulan karakter yang sama, maka tunjukkan yang terkecil secara leksikografis. Dan satu kendala adalah setiap karakter di s adalah unik
Jadi, jika inputnya seperti s = "pqr", maka outputnya adalah ['r', 'qr', 'q', 'pr', 'pqr', 'pq', 'p']
Untuk mengatasi ini, kami akan mengikuti langkah-langkah ini −
- st_arr. = daftar baru
- untuk i dalam ukuran rentang s - 1 hingga 0, kurangi 1, lakukan
- untuk j dalam rentang 0 hingga ukuran st_arr - 1, lakukan
- sisipkan [s[i] gabungkan st_arr[j]] di akhir st_arr
- sisipkan s[i] di akhir st_arr
- untuk j dalam rentang 0 hingga ukuran st_arr - 1, lakukan
- kembalikan st_arr
Contoh
Mari kita lihat implementasi berikut untuk mendapatkan pemahaman yang lebih baik −
def solve[s]: st_arr = [] for i in range[len[s]-1,-1,-1]: for j in range[len[st_arr]]: st_arr.append[s[i]+st_arr[j]] st_arr.append[s[i]] return st_arr s = "pqr" print[solve[s]]
Memasukkan
"pqr"
Keluaran
['r', 'qr', 'q', 'pr', 'pqr', 'pq', 'p']_
Dalam tutorial ini, Anda akan belajar cara menggunakan Python untuk menemukan semua permutasi string, termasuk menggunakan itertools
, rekursi, dan Python untuk loop. Anda juga akan belajar bagaimana menemukan semua kombinasi string ketika penggantian huruf individual diperbolehkan
Tapi apa itu permutasi? . Jadi, misalnya string abc
_ bisa juga ditulis sebagai ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
Jawaban Cepat. Pengguna Itertools untuk Menemukan Semua Permutasi dari sebuah String
Daftar isi
Apa itu Permutasi String?
Permutasi string mengacu pada semua urutan berbeda yang mungkin diambil oleh string. Mari, misalnya, lihat string yang terdiri dari tiga huruf. 'abc'
. Ketika kami menemukan semua permutasi dari string ini, kami mengembalikan daftar berikut. ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
. Kita dapat melihat di sini, bahwa kita memiliki daftar yang berisi enam item
Kita benar-benar dapat menghitung jumlah permutasi yang akan dimiliki string untuk kekuatan panjang apa pun, dengan menghitung faktorial panjangnya. Jadi, dalam contoh kita tentang 'abc'
, kita akan menghitung nilai 3!
, yang sebenarnya bernilai
# Getting all permutations of a string using recursion in Python
a_string = 'abc'
def get_permutation[some_string, idx=0]:
if idx == len[some_string] - 1:
print["".join[some_string]]
for j in range[idx, len[some_string]]:
words_list = [c for c in some_string]
words_list[idx], words_list[j] = words_list[j], words_list[idx]
get_permutation[words_list, idx + 1]
permutations = get_permutation[a_string]
print[permutations]
# Returns: ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
0Sekarang setelah Anda memiliki pemahaman tentang apa artinya menghasilkan semua kombinasi string dengan Python, mari kita lihat bagaimana kita dapat dengan mudah menghasilkan permutasi string yang berbeda
Gunakan Itertools dengan Python untuk Menemukan Semua Permutasi dari sebuah String
Itertools adalah alat Python bawaan yang fantastis yang memungkinkan Anda membuat pekerjaan mudah dari masalah yang melibatkan iterables. Percaya atau tidak, string dalam Python adalah objek yang dapat diubah. Karena itu, kita dapat dengan mudah mengulang string kita menggunakan pustaka itertools
Bahkan, perpustakaan itertools memiliki fungsi yang disebut
# Getting all permutations of a string using recursion in Python
a_string = 'abc'
def get_permutation[some_string, idx=0]:
if idx == len[some_string] - 1:
print["".join[some_string]]
for j in range[idx, len[some_string]]:
words_list = [c for c in some_string]
words_list[idx], words_list[j] = words_list[j], words_list[idx]
get_permutation[words_list, idx + 1]
permutations = get_permutation[a_string]
print[permutations]
# Returns: ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
2. Kami mengirimkan iterable, dalam hal ini, string, fungsi mengembalikan daftar semua kemungkinan kombinasiMari kita lihat contoh string kita dan bagaimana kita bisa menggunakan pustaka itertools untuk menghitung permutasinya
import itertools
a_string = 'abc'
string_permutations = itertools.permutations[a_string]
string_permutations = list[string_permutations]
string_permutations = [''.join[permutation] for permutation in string_permutations]
print[string_permutations]
# Returns: ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
Mari kita lihat apa yang telah kita lakukan di sini
- Kami mengimpor pustaka itertools
- Kami memuat string kami dan menugaskannya ke variabel
3# Getting all permutations of a string using recursion in Python a_string = 'abc' def get_permutation[some_string, idx=0]: if idx == len[some_string] - 1: print["".join[some_string]] for j in range[idx, len[some_string]]: words_list = [c for c in some_string] words_list[idx], words_list[j] = words_list[j], words_list[idx] get_permutation[words_list, idx + 1] permutations = get_permutation[a_string] print[permutations] # Returns: ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
- Kami kemudian menggunakan fungsi
_4 untuk membuat objek itertools# Getting all permutations of a string using recursion in Python a_string = 'abc' def get_permutation[some_string, idx=0]: if idx == len[some_string] - 1: print["".join[some_string]] for j in range[idx, len[some_string]]: words_list = [c for c in some_string] words_list[idx], words_list[j] = words_list[j], words_list[idx] get_permutation[words_list, idx + 1] permutations = get_permutation[a_string] print[permutations] # Returns: ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
- Kami mengubah objek ini menjadi daftar, yang mengembalikan daftar tupel, yang berisi permutasi kami
- Akhirnya, kami menggunakan pemahaman daftar untuk menggabungkan permutasi kami menjadi string individual
Di bagian selanjutnya, Anda akan mempelajari cara menggunakan rekursi untuk menemukan kombinasi string di Python
Ingin mempelajari lebih lanjut tentang pemahaman daftar Python? . Lebih dari pembelajar visual, lihat tutorial YouTube saya di sini
Gunakan Rekursi di Python untuk Menemukan Semua Permutasi dari sebuah String
Konsep yang akan kita gunakan dalam rekursi untuk membuat permutasi dikenal sebagai backtracking. Idenya adalah kita mundur untuk setiap kemungkinan kombinasi yang bisa ada
Mari kita lihat bagaimana metode rekursif ini bekerja untuk membantu menemukan semua kombinasi string di Python
# Getting all permutations of a string using recursion in Python
a_string = 'abc'
def get_permutation[some_string, idx=0]:
if idx == len[some_string] - 1:
print["".join[some_string]]
for j in range[idx, len[some_string]]:
words_list = [c for c in some_string]
words_list[idx], words_list[j] = words_list[j], words_list[idx]
get_permutation[words_list, idx + 1]
permutations = get_permutation[a_string]
print[permutations]
# Returns: ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
Kita dapat melihat bahwa ini mengembalikan sama seperti di atas. Namun, ini sedikit kurang intuitif untuk diikuti oleh pengguna Python pemula, jadi mungkin menggunakan metode itertools mungkin lebih disukai untuk keterbacaan. Metode ini, bagaimanapun, sangat membantu ketika Anda tidak dapat menggunakan itertools karena alasan tertentu
Ingin mempelajari cara menggunakan fungsi Python
# Getting all permutations of a string using recursion in Python
a_string = 'abc'
def get_permutation[some_string, idx=0]:
if idx == len[some_string] - 1:
print["".join[some_string]]
for j in range[idx, len[some_string]]:
words_list = [c for c in some_string]
words_list[idx], words_list[j] = words_list[j], words_list[idx]
get_permutation[words_list, idx + 1]
permutations = get_permutation[a_string]
print[permutations]
# Returns: ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
5 untuk mengulangi dua daftar? Permutasi dengan Pengulangan String dengan Python
Pada contoh di atas, kami menggunakan Python untuk menemukan semua kombinasi string tanpa pengulangan. Di bagian ini, Anda akan belajar cara menggunakan Python untuk mendapatkan semua permutasi string dengan pengulangan
Ini dapat dengan mudah dilakukan dengan menggunakan Python for loop
Mari kita lihat sebuah contoh, menggunakan string yang sama yang telah kita gunakan sebelumnya, 'abc'
# Use Python to get all combinations of a string with repetition
a_string = 'abc'
final_list = [[]]
length = len[a_string]
groups = [list[a_string]] * length
for i in groups:
final_list = [x+[y] for x in final_list for y in i]
permutations = [''.join[item] for item in final_list]
print[permutations]
# Returns ['aaa', 'aab', 'aac', 'aba', 'abb', 'abc', 'aca', 'acb', 'acc', 'baa', 'bab', 'bac', 'bba', 'bbb', 'bbc', 'bca', 'bcb', 'bcc', 'caa', 'cab', 'cac', 'cba', 'cbb', 'cbc', 'cca', 'ccb', 'ccc']
Pada kode di atas, kami menggunakan for loop dan pemahaman daftar untuk mengembalikan semua kombinasi string Python dengan pengulangan
Kode di atas bisa menjadi sangat intensif sumber daya. Kita juga dapat melihat di sini bahwa kita memiliki kombinasi berkali-kali lebih banyak ketika kita menggunakan pengulangan daripada jika tidak
Ingin mempelajari lebih lanjut tentang for-loop Python? . Ingin menonton video saja?
Kesimpulan
Dalam posting ini, Anda belajar bagaimana menggunakan Python untuk menghasilkan daftar semua permutasi string. Anda belajar bagaimana melakukan ini menggunakan perpustakaan itertools
yang populer serta menggunakan rekursi. Anda kemudian belajar bagaimana menggunakan loop for Python untuk menghasilkan daftar semua kombinasi string ketika pengulangan diperbolehkan