Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Isih Rentetan dengan Nombor Terbenam Secara Semulajadi dalam Python?

Bagaimanakah Saya Boleh Isih Rentetan dengan Nombor Terbenam Secara Semulajadi dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-10 09:43:14666semak imbas

How Can I Sort Strings with Embedded Numbers Naturally in Python?

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!

Kenyataan:
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