Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana Mengisih Rentetan yang Mengandungi Nombor dengan Betul?

Bagaimana Mengisih Rentetan yang Mengandungi Nombor dengan Betul?

DDD
Lepaskan: 2024-12-03 14:49:10
asal
379 orang telah melayarinya

How to Sort Strings Containing Numbers Correctly?

Cara Mengisih Rentetan dengan Nombor Dengan Betul

Mengisih rentetan yang mengandungi nombor boleh mencabar. Kaedah sort() lalai menganggap setiap aksara sebagai entitinya sendiri, mengakibatkan susunan yang salah. Untuk mengisih rentetan sedemikian dengan betul, pendekatan yang lebih canggih diperlukan.

Satu kaedah yang berkesan ialah pengisihan manusia, yang menggunakan ungkapan biasa untuk mengekstrak komponen berangka daripada rentetan. Teknik ini membolehkan nombor diisih secara berasingan daripada bahagian abjad.

Untuk melaksanakan pengisihan manusia, ikut langkah berikut:

  1. Import modul semula.
  2. Tentukan fungsi atoi(teks) untuk menukar rentetan kepada integer atau biarkan ia sebagai rentetan jika ia bukan rentetan nombor.
  3. Tentukan fungsi natural_keys(text) untuk membelah rentetan menggunakan ungkapan biasa (d ).
  4. Isih senarai menggunakan parameter kekunci sort(), menghantar ke natural_keys fungsi.

Contoh:

import re

def atoi(text):
    return int(text) if text.isdigit() else text

def natural_keys(text):
    return [ atoi(c) for c in re.split(r'(\d+)', text) ]

alist = [
    "something1",
    "something12",
    "something17",
    "something2",
    "something25",
    "something29"]

alist.sort(key=natural_keys)
print(alist)
Salin selepas log masuk

Output:

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

Pendekatan ini menyusun dengan tepat rentetan dengan mempertimbangkan kedua-dua bahagian abjad dan berangka.

Atas ialah kandungan terperinci Bagaimana Mengisih Rentetan yang Mengandungi Nombor dengan Betul?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan