Isih Semulajadi dalam Python: Analog kepada Fungsi natsort PHP
Untuk mengisih senarai rentetan dalam "tertib semula jadi", dengan awalan angka ditafsirkan sebagai integer, seseorang itu perlu menggunakan algoritma khusus. PHP mempunyai fungsi natsort yang memenuhi keperluan ini, memberikan hasil tersusun yang serupa dengan persepsi manusia.
Dalam Python, kefungsian yang serupa boleh dicapai menggunakan pendekatan berikut:
Menggunakan Alam Semulajadi Fungsi Utama:
Fungsi ini melaksanakan penukaran yang diperlukan kepada kekunci yang mendorong proses pengisihan semula jadi. Ia menukar awalan berangka kepada integer dan menganggap aksara bukan angka sebagai rentetan.
<code class="python">import re def natural_key(string_): return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', string_)]</code>
Contoh penggunaan:
<code class="python">L = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg'] sorted(L, key=natural_key) # ['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']</code>
Dengan menggunakan fungsi natural_key sebagai kunci dalam fungsi pengisihan Python, senarai diisih mengikut cara yang sejajar dengan susunan semula jadi, meletakkan awalan berangka dalam tertib berangka menaik.
Pendekatan Alternatif dengan natcmp dan natcasecmp:
Kaedah alternatif ini menggunakan pengguna -fungsi yang ditentukan untuk mencapai pengisihan semula jadi:
<code class="python">def try_int(s): try: return int(s) except: return s def natsort_key(s): import re return map(try_int, re.findall(r'(\d+|\D+)', s)) def natcmp(a, b): return cmp(natsort_key(a), natsort_key(b)) def natcasecmp(a, b): return natcmp(a.lower(), b.lower())</code>
Contoh penggunaan:
<code class="python">L.sort(natcasecmp)</code>
Coretan kod ini secara berkesan mengubah suai kaedah isihan senarai L untuk menggunakan fungsi natcasecmp untuk pengisihan, yang melakukan perbandingan rentetan tidak sensitif huruf besar secara semula jadi.
Dengan melaksanakan salah satu daripada pendekatan ini, pembangun boleh mencapai pengisihan semula jadi dalam Python, menangani keperluan untuk mengisih senarai dengan cara yang meniru persepsi manusia, terutamanya apabila berurusan dengan rentetan yang mengandungi kedua-dua aksara angka dan bukan angka.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pengisihan Semula Jadi dalam Python: Analog kepada Fungsi natsort PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!