Mengisih Rentetan dengan Nombor Terbenam
Apabila berurusan dengan rentetan yang mengandungi nombor, menyusunnya mengikut abjad mungkin tidak menghasilkan hasil yang diingini. Untuk mengisih rentetan sedemikian dengan betul, anda perlu mempertimbangkan kedua-dua komponen teks dan berangka.
Isih Manusia (Isih Semulajadi)
Isih semulajadi, juga dikenali sebagai isihan manusia, ialah teknik yang digunakan untuk menyusun item dengan cara yang konsisten dengan cara manusia melihatnya. Pendekatan ini melibatkan mengekstrak nombor daripada rentetan dan kemudian mengisihnya berdasarkan nilai berangkanya.
Dalam Python, anda boleh melaksanakan pengisihan semula jadi menggunakan kekunci isihan tersuai berikut:
def natural_keys(text): return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
Ini fungsi membahagikan rentetan kepada aksara dan nombor dan kemudian menukar aksara berangka kepada integer. Senarai diisih diperoleh dengan memanggil fungsi sort() dengan kunci tersuai ini:
alist = ["something1", "something12", "something17", "something2", "something25", "something29"] alist.sort(key=natural_keys) print(alist)
Outputnya ialah:
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Isih Rentetan dengan Terapung
Jika rentetan anda mengandungi nombor titik terapung, anda boleh mengubah suai kekunci pengisihan semula jadi untuk mengekstrak dan menukar kepada terapung menggunakan regex berikut:
def natural_keys(text): return [float(c) if c.isdigit() else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
Kunci diubah suai ini membolehkan anda mengisih rentetan dengan nombor titik terapung juga:
alist = ["something1", "something2", "something1.0", "something1.25", "something1.105"] alist.sort(key=natural_keys) print(alist)
Outputnya ialah:
['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
Dengan menggunakan teknik pengisihan manusia, anda boleh mengisih rentetan dengan nombor terbenam dengan cekap dengan cara yang sejajar dengan manusia gerak hati.
Atas ialah kandungan terperinci Bagaimana Mengisih Rentetan yang Mengandungi Nombor Secara Semulajadi dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!