Bagaimanakah saya boleh menjana semua pilih atur yang mungkin bagi rentetan dalam Python, termasuk mengendalikan pendua?

Linda Hamilton
Lepaskan: 2024-10-27 04:16:30
asal
912 orang telah melayarinya

How can I generate all possible permutations of a string in Python, including handling duplicates?

Permuting Strings in Python

Mencari semua pilih atur yang mungkin bagi rentetan tertentu boleh menjadi tugas yang mencabar. Walau bagaimanapun, Python menyediakan penyelesaian mudah menggunakan modul itertools.

Penyelesaian: itertools.permutations()

Kaedah itertools.permutations() direka khusus untuk menjana pilih atur . Ia mengambil iterable sebagai input dan mengembalikan objek penjana yang berulang ke atas semua pilih atur yang mungkin bagi iterable.

Dalam kes rentetan, kita boleh menukarnya kepada iterable menggunakan fungsi list(). Untuk mendapatkan semua pilih atur rentetan yang mungkin, kami menggunakan kod berikut:

<code class="python">from itertools import permutations
string = 'stack'
perms = [''.join(p) for p in permutations(list(string))]</code>
Salin selepas log masuk

Hasilnya ialah senarai rentetan yang mengandungi semua pilih atur rentetan asal.

Pengendalian Pendua

Jika anda ingin mengecualikan pilih atur pendua, anda boleh menggunakan set kerana ia hanya mengekalkan elemen unik.

<code class="python">perms = set([''.join(p) for p in permutations(list(string))])</code>
Salin selepas log masuk

Kelebihan itertools.permutations()

  • Cekap: Kaedah menggunakan pelaksanaan berasaskan C untuk pelaksanaan pantas.
  • Komprehensif: Ia menjana semua pilih atur yang mungkin tanpa mengulangi apa-apa.
  • Boleh disesuaikan: Bilangan pilih atur boleh dikawal dengan menentukan parameter 'r'.

Contoh Output

Untuk 'tindanan' rentetan, senarai output akan mengandungi pilih atur berikut:

['stack', 'stakc', 'stcak', 'stcka', 'stkac', 'stkca', 'satck', 'satkc', 'sactk', 'sackt', 'saktc', 'sakct', 'sctak', 'sctka', 'scatk', 'scakt', 'sckta', 'sckat', 'sktac', 'sktca', 'skatc', 'skact', 'skcta', 'skcat', 'tsack', 'tsakc', 'tscak', 'tscka', 'tskac', 'tskca', 'tasck', 'taskc', 'tacsk', 'tacks', 'taksc', 'takcs', 'tcsak', 'tcska', 'tcask', 'tcaks', 'tcksa', 'tckas', 'tksac', 'tksca', 'tkasc', 'tkacs', 'tkcsa', 'tkcas', 'astck', 'astkc', 'asctk', 'asckt', 'asktc', 'askct', 'atsck', 'atskc', 'atcsk', 'atcks', 'atksc', 'atkcs', 'acstk', 'acskt', 'actsk', 'actks', 'ackst', 'ackts', 'akstc', 'aksct', 'aktsc', 'aktcs', 'akcst', 'akcts', 'cstak', 'cstka', 'csatk', 'csakt', 'cskta', 'cskat', 'ctsak', 'ctska', 'ctask', 'ctaks', 'ctksa', 'ctkas', 'castk', 'caskt', 'catsk', 'catks', 'cakst', 'cakts', 'cksta', 'cksat', 'cktsa', 'cktas', 'ckast', 'ckats', 'kstac', 'kstca', 'ksatc', 'ksact', 'kscta', 'kscat', 'ktsac', 'ktsca', 'ktasc', 'ktacs', 'ktcsa', 'ktcas', 'kastc', 'kasct', 'katsc', 'katcs', 'kacst', 'kacts', 'kcsta', 'kcsat', 'kctsa', 'kctas', 'kcast', 'kcats']
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh menjana semua pilih atur yang mungkin bagi rentetan dalam Python, termasuk mengendalikan pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!