Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Mengisih Nombor Rentetan Secara Berangka dalam Python?

Bagaimana Mengisih Nombor Rentetan Secara Berangka dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-12-08 00:07:11159semak imbas

How to Sort String Numbers Numerically in Python?

Mengisih Nombor Rentetan Secara Numerik

Apabila berurusan dengan senarai rentetan yang mewakili nilai berangka, menyusunnya berdasarkan 数値 sebenar mungkin kelihatan seperti satu tugas yang mudah. Walau bagaimanapun, fungsi sort() lalai dalam Python boleh memberikan hasil yang tidak dijangka.

Isu ini timbul kerana fungsi sort() membandingkan rentetan secara leksikografi, bermakna ia mengisih rentetan mengikut abjad bukannya numerik. Untuk menyelesaikan masalah ini, adalah penting untuk menukar rentetan kepada integer sebenar sebelum melakukan isihan.

Pertimbangkan kod Python berikut:

list1 = ["1", "10", "3", "22", "23", "4", "2", "200"]
for item in list1:
    item = int(item)

list1.sort()

Dalam kod ini, kami mula-mula menukar setiap rentetan dalam senaraikan kepada integer menggunakan fungsi int(). Walau bagaimanapun, kami kemudiannya mengabaikan untuk menggunakan nilai integer yang ditukar dalam jenis. Hasilnya, fungsi membandingkan rentetan asal dan menghasilkan output berikut:

['1', '10', '2', '200', '22', '23', '3', '4']

Untuk mengisih senarai secara berangka, kita perlu memasukkan integer yang ditukar ke dalam isihan, seperti yang ditunjukkan di bawah:

list1 = [int(x) for x in list1]
list1.sort()

Kali ini, fungsi akan membandingkan nilai integer dengan betul dan menghasilkan yang dikehendaki output:

['1', '2', '3', '4', '10', '22', '23', '200']

Sebagai alternatif, jika anda perlu mengekalkan rentetan daripada menukarnya kepada integer, anda boleh menggunakan fungsi utama semasa mengisih. Fungsi sort() membolehkan anda menentukan fungsi utama yang digunakan pada setiap elemen sebelum ia dibandingkan. Ini membolehkan anda menyesuaikan kriteria perbandingan.

Sebagai contoh, untuk mengisih senarai rentetan secara berangka menggunakan fungsi kekunci, anda boleh menggunakan kod berikut:

list1 = ["1", "10", "3", "22", "23", "4", "2", "200"]
list1.sort(key=int)

Dalam kes ini, fungsi utama int() digunakan pada setiap rentetan sebelum perbandingan. Fungsi menukar rentetan kepada integer, dan fungsi sort() membandingkan nilai integer yang terhasil, menghasilkan output yang sama yang diingini:

['1', '2', '3', '4', '10', '22', '23', '200']

Dengan memahami cara fungsi sort() berfungsi dalam Python dan menggunakan fungsi utama apabila perlu, anda boleh mengisih senarai nombor rentetan secara berangka dengan berkesan, tanpa mengira format asalnya.

Atas ialah kandungan terperinci Bagaimana Mengisih Nombor Rentetan Secara Berangka 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