Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mencapai Pengisihan Rentetan Semula Jadi dalam Python?
Isih Rentetan Asli dalam Python
Dalam Python, mengisih senarai rentetan mengikut abjad menggunakan fungsi sorted() lalai mungkin tidak menghasilkan yang diingini perintah "semula jadi". Ini kerana sorted() merawat rentetan sebagai aksara individu, mengakibatkan susunan yang tidak wajar.
Sebagai contoh, pertimbangkan senarai rentetan berikut:
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
Isih senarai ini dengan sorted() menghasilkan yang berikut:
['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']
Ini bukan susunan pengisihan semula jadi, kerana nombor yang mengikuti huruf disusun mengikut abjad berbanding dengan dianggap sebagai sebahagian daripada nombor.
Untuk mencapai pengisihan rentetan semula jadi, anda boleh menggunakan perpustakaan natsort. Natsort menyediakan fungsi yang mengisih rentetan dengan cara yang lebih intuitif, mengekalkan susunan nombor semula jadi.
Anda boleh memasang natsort menggunakan pip:
pip install natsort
Untuk melakukan pengisihan semula jadi pada yang diberikan senarai, gunakan fungsi natsorted():
from natsort import natsorted x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9'] natsorted(x, key=lambda y: y.lower())
Ini akan menghasilkan pengisihan semula jadi yang diingini pesanan:
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
Fungsi natsort_keygen() juga boleh digunakan untuk mencipta kunci pengisihan:
from natsort import natsort_keygen natsort_key = natsort_keygen(key=lambda y: y.lower()) list.sort(key=natsort_key)
Ini akan mengisih senarai dengan cara yang sama seperti natsorted().
Selain natsorted() dan natsort_keygen(), natsort juga menyediakan os_sorted() dan os_sort_keygen() fungsi. Fungsi ini membolehkan anda mengisih senarai mengikut gelagat pengisihan penjelajah fail sistem pengendalian anda, yang mungkin berbeza daripada gelagat lalai natsort.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Pengisihan Rentetan Semula Jadi dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!