Isih Semulajadi: Seni Menyusun Rentetan dengan Nombor Terbenam
Mengisih rentetan dengan nombor boleh menjadi tugas yang sukar, tetapi ia penting untuk ramai aplikasi. Dalam Soal Jawab ini, kami akan meneroka penyelesaian yang mencapai hasil pengisihan seperti manusia, membolehkan anda menyusun rentetan seperti "sesuatu1", "sesuatu2" dan "sesuatu17" dalam susunan yang logik.
Cabaran:
Input yang diberikan terdiri daripada senarai rentetan yang mengandungi nombor. Walau bagaimanapun, kaedah sort() lalai gagal menyusunnya dengan cara yang masuk akal kepada manusia. Sebagai contoh, senarai berikut:
something1 something12 something17 something2 something25 something29
akan diisih sebagai:
something1 something12 something17 something2 something25 something29
Penyelesaian: Kunci Semulajadi
Penyelesaian terletak dalam menggunakan kunci semula jadi, kaedah pengisihan yang direka untuk kebolehbacaan manusia. Kekunci asli merawat nombor dalam rentetan sebagai entiti berasingan sambil mengekalkan struktur keseluruhan rentetan.
Berikut ialah pelaksanaan Python menggunakan fungsi natural_keys:
import re def natural_keys(text): return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
Apabila digunakan pada senarai input, keputusannya ialah:
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Tambahan Pertimbangan:
Jika anda perlu mengisih rentetan dengan nombor titik terapung, anda boleh mengubah suai regex dalam fungsi natural_keys untuk memadankan terapung dan bukannya integer.
def natural_keys(text): return [float(c) if c.isdigit() or '.' in c else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
Peningkatan ini membolehkan anda mengisih rentetan seperti:
something1 something2 something1.0 something1.25 something1.105
dalam yang berikut pesanan:
['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
Dengan menerima kuasa kekunci semula jadi, anda kini boleh dengan mudah menyusun rentetan dengan nombor terbenam dalam cara yang boleh dibaca manusia, menjadikan tugas manipulasi data anda lebih cekap dan intuitif.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Rentetan dengan Nombor Terbenam Secara Semulajadi dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!