Bagaimana Anda menemukan kombinasi string di python?

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 diberikan

Berapa tingkat kesulitan latihan ini?

Mudah Sedang Keras

Uji 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
  • 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']
_

Bagaimana Anda menemukan kombinasi string di python?


Bagaimana Anda menemukan kombinasi string di python?

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

Bagaimana Anda menemukan kombinasi string di python?
Jawaban Cepat – Temukan Semua Permutasi String dengan Python

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']
0

Sekarang 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 kombinasi

Mari 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

  1. Kami mengimpor pustaka itertools
  2. Kami memuat string kami dan menugaskannya ke variabel
    # 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']
    3
  3. Kami kemudian menggunakan fungsi
    # 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']
    _4 untuk membuat objek itertools
  4. Kami mengubah objek ini menjadi daftar, yang mengembalikan daftar tupel, yang berisi permutasi kami
  5. 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

Apakah ada fungsi kombinasi di Python?

Kombinasi adalah kumpulan elemen yang urutannya tidak penting. Modul itertools Python menyediakan metode combination() untuk menghitung kombinasi data yang diberikan .

Bagaimana Anda menemukan permutasi dan kombinasi di Python?

Pertama impor paket itertools untuk mengimplementasikan metode permutasi di python . Metode ini mengambil daftar sebagai masukan dan mengembalikan daftar objek tupel yang berisi semua permutasi dalam bentuk daftar.

Bagaimana Anda menyelesaikan kombinasi dengan Python?

Matematika. comb() mengembalikan jumlah cara memilih k hasil tak terurut dari n kemungkinan, tanpa pengulangan, juga dikenal sebagai kombinasi . Catatan. Parameter yang dilewatkan dalam metode ini harus berupa bilangan bulat positif.

Bagaimana Anda mencetak kombinasi dengan Python?

Contoh - 2. Cetak kombinasi elemen unik. .
def sisir(L)
a=int(input("Masukkan angka pertama. "))
b=int(input("Masukkan angka kedua. "))
c=int(input("Masukkan angka ketiga. "))
L. tambahkan (a)
L. tambahkan(b)
L. tambahkan(c)
untuk saya dalam jangkauan(3)