Dapatkan semua kombinasi string python

Sebagai contoh. banyaknya cara pemilihan karakter dari yup adalah yup, ypu, uyp, upy, puy,

yup
ypu
uyp
upy
puy
pyu
None
0, dan tidak memilih salah satu

Kami akan melakukan hal yang sama dalam contoh berikut


Contoh 1. Menggunakan rekursi

def get_permutation(string, i=0):

    if i == len(string):   	 
        print("".join(string))

    for j in range(i, len(string)):

        words = [c for c in string]
   
        # swap
        words[i], words[j] = words[j], words[i]
   	 
        get_permutation(words, i + 1)

print(get_permutation('yup'))
_

Keluaran

yup
ypu
uyp
upy
puy
pyu
None

Dalam contoh ini, rekursi digunakan untuk menemukan permutasi dari sebuah string yup

  • Kondisi if mencetak
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    2 diteruskan sebagai argumen jika sama dengan panjang
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    3
  • Dalam setiap iterasi perulangan for, setiap karakter yup disimpan di
    yup
    ypu
    uyp
    upy
    puy
    pyu
    None
    5
  • Unsur-unsur kata ditukar. Dengan cara ini, kami mencapai semua kombinasi karakter yang berbeda
  • Proses ini berlanjut sampai panjang maksimum tercapai

Contoh 2. Menggunakan itertools

from itertools import permutations

words = [''.join(p) for p in permutations('pro')]

print(words)
_

Keluaran

['pro', 'por', 'rpo', 'rop', 'opr', 'orp']

Menggunakan permutasi dari modul

yup
ypu
uyp
upy
puy
pyu
None
_6, kita dapat menemukan permutasi dari sebuah string

Untuk mendapatkan powerset unik di Python, ubah daftar menjadi satu set untuk menghapus duplikat. Jika tidak, gunakan pendekatan yang sama seperti di atas

Berikut adalah tampilan kode setelah perubahan

import itertools

numbers = [1, 3, 3]

combinations = []

for r in range(len(numbers)+1):
    for combination in itertools.combinations(set(numbers), r):
        combinations.append(combination)

print(combinations)
_

Sekarang hanya mengembalikan kombinasi di mana tidak ada nilai duplikat

[(), (1,), (3,), (1, 3)]

Resep Powerset—Pendekatan yang Lebih Sederhana dan Lebih Cepat

Sesuai dokumen itertools, Anda dapat menggunakan pendekatan yang sedikit lebih sederhana dan mungkin lebih efisien untuk mendapatkan semua kombinasi iterable

Ini kodenya

from itertools import chain, combinations

def powerset(items):
    l_items = list(items)
    return chain.from_iterable(combinations(l_items, r) for r in range(len(l_items) + 1))

numbers = [1, 2, 3]

print(list(powerset(numbers)))

Keluaran

[(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]

Resep Powerset—Temukan Semua Kombinasi Elemen Unik

Untuk menemukan semua kombinasi nilai unik, Anda perlu melakukan sedikit perubahan pada fungsi

import itertools

numbers = [1, 2, 3]

combinations = []

for r in range(len(numbers)+1):
    for combination in itertools.combinations(numbers, r):
        combinations.append(combination)

print(combinations)
0 di atas. Yaitu, ubah iterable
import itertools

numbers = [1, 2, 3]

combinations = []

for r in range(len(numbers)+1):
    for combination in itertools.combinations(numbers, r):
        combinations.append(combination)

print(combinations)
1 menjadi satu set untuk menghapus duplikat

Berikut adalah tampilan kode sekarang dengan contoh panggilan

from itertools import chain, combinations

def powerset(items):
    l_items = list(set(items))
    return chain.from_iterable(combinations(l_items, r) for r in range(len(l_items) + 1))

numbers = [3, 1, 3]

print(list(powerset(numbers)))

Keluaran

[(), (1,), (3,), (1, 3)]

Kesimpulan

Hari ini Anda belajar cara mendapatkan semua kombinasi daftar Python. Grup set ini juga dikenal sebagai powerset dari daftar

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

Dapatkan semua kombinasi string python


Dapatkan semua kombinasi string python

Bagaimana menemukan semua kemungkinan kombinasi string dengan Python?

Untuk menemukan semua kemungkinan permutasi dari string tertentu, Anda dapat menggunakan modul itertools yang memiliki metode berguna yang disebut permutasi(iterable[, r]). This method return successive r length permutations of elements in the iterable as tuples.

Bagaimana menemukan semua kemungkinan kombinasi huruf dengan Python?

Ilmu Data Praktis menggunakan Python .
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

Bagaimana Anda mencetak semua kemunculan string dengan Python?

Metode 1. Regex re. Untuk mendapatkan semua kemunculan pola dalam string yang diberikan, Anda dapat menggunakan metode ekspresi reguler re. finditer(pola, string) . Hasilnya adalah iterable dari objek pencocokan—Anda dapat mengambil indeks pencocokan menggunakan pencocokan. mulai() dan cocokkan.

Bagaimana Anda menemukan semua kejadian di Python?

Salah satu cara paling dasar untuk mendapatkan posisi indeks dari semua kemunculan elemen dalam daftar Python adalah dengan menggunakan perulangan for dan fungsi enumerasi Python. The enumerate function is used to iterate over an object and returns both the index and element.