Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mencapai Pengisihan Semula Jadi dalam Python: Analog kepada Fungsi natsort PHP?

Bagaimana untuk Mencapai Pengisihan Semula Jadi dalam Python: Analog kepada Fungsi natsort PHP?

Linda Hamilton
Lepaskan: 2024-11-06 01:59:02
asal
406 orang telah melayarinya

How to Achieve Natural Sorting in Python: An Analog to PHP's natsort Function?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Contoh penggunaan:

<code class="python">L.sort(natcasecmp)</code>
Salin selepas log masuk

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!

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