Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengisih Senarai Nombor Rentetan Secara Numerik dalam Python?

Bagaimana untuk Mengisih Senarai Nombor Rentetan Secara Numerik dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-08 17:57:12643semak imbas

How to Sort a List of String Numbers Numerically in Python?

Mengisih Senarai Nombor Rentetan Secara Numerik

Walaupun ringkasnya, fungsi sort() Python boleh mengelirukan apabila berurusan dengan rentetan yang mewakili nombor . Seperti yang ditunjukkan dalam coretan kod di bawah, cubaan menukar rentetan ini kepada integer dan kemudian mengisihnya menghasilkan hasil yang salah:

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

list1.sort()
print(list1)

Output:

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

Untuk membetulkan isu ini, anda mesti sebenarnya menukar rentetan anda kepada integer. Berikut ialah kod yang diperbetulkan:

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

Ini menghasilkan tertib berangka yang betul:

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

Sebagai alternatif, jika anda perlu mengekalkan elemen sebagai rentetan, anda boleh menggunakan parameter utama mengikut urutan (). Parameter ini menerima fungsi yang dipanggil pada setiap elemen sebelum ia dibandingkan. Nilai pulangan fungsi utama digunakan untuk perbandingan dan bukannya elemen itu sendiri.

Sebagai contoh:

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

atau

list1 = sorted([int(x) for x in list1])

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