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
Lepaskan: 2024-12-10 09:43:14
asal
702 orang telah melayarinya

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

akan diisih sebagai:

something1
something12
something17
something2
something25
something29
Salin selepas log masuk
Salin selepas log masuk

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

Apabila digunakan pada senarai input, keputusannya ialah:

['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Salin selepas log masuk

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

Peningkatan ini membolehkan anda mengisih rentetan seperti:

something1
something2
something1.0
something1.25
something1.105
Salin selepas log masuk

dalam yang berikut pesanan:

['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
Salin selepas log masuk

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!

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