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>
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>
Kelebihan itertools.permutations()
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']
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!