Heim > Backend-Entwicklung > Python-Tutorial > Wie sortiere ich Zeichenfolgen mit Zahlen auf natürliche Weise in Python?

Wie sortiere ich Zeichenfolgen mit Zahlen auf natürliche Weise in Python?

DDD
Freigeben: 2024-11-30 01:46:10
Original
596 Leute haben es durchsucht

How to Sort Strings Containing Numbers Naturally in Python?

Sortieren von Zeichenfolgen mit eingebetteten Zahlen

Beim Umgang mit Zeichenfolgen, die Zahlen enthalten, führt die alphabetische Sortierung möglicherweise nicht zu den gewünschten Ergebnissen. Um solche Zeichenfolgen richtig zu sortieren, müssen Sie sowohl die Text- als auch die numerischen Komponenten berücksichtigen.

Menschliche Sortierung (natürliche Sortierung)

Natürliche Sortierung, auch als menschliche Sortierung bekannt, ist eine Technik, mit der Gegenstände so sortiert werden, dass sie der Wahrnehmung des Menschen entsprechen. Bei diesem Ansatz werden die Zahlen aus den Zeichenfolgen extrahiert und dann anhand ihrer numerischen Werte sortiert.

In Python können Sie die natürliche Sortierung mithilfe des folgenden benutzerdefinierten Sortierschlüssels implementieren:

def natural_keys(text):
    return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
Nach dem Login kopieren

This Die Funktion teilt die Zeichenfolge in Zeichen und Zahlen auf und wandelt die numerischen Zeichen dann in ganze Zahlen um. Die sortierte Liste wird durch Aufrufen der Funktion sort() mit diesem benutzerdefinierten Schlüssel erhalten:

alist = ["something1", "something12", "something17", "something2", "something25", "something29"]
alist.sort(key=natural_keys)
print(alist)
Nach dem Login kopieren

Die Ausgabe wäre:

['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Nach dem Login kopieren

Sorting Strings with Floats

Wenn Ihre Zeichenfolgen Gleitkommazahlen enthalten, können Sie den natürlichen Sortierschlüssel wie folgt ändern, um ihn zu extrahieren und in Gleitkommazahlen umzuwandeln Regex:

def natural_keys(text):
    return [float(c) if c.isdigit() else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
Nach dem Login kopieren

Mit diesem modifizierten Schlüssel können Sie auch Zeichenfolgen mit Gleitkommazahlen sortieren:

alist = ["something1", "something2", "something1.0", "something1.25", "something1.105"]
alist.sort(key=natural_keys)
print(alist)
Nach dem Login kopieren

Die Ausgabe wäre:

['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
Nach dem Login kopieren

Durch den Einsatz menschlicher Sortiertechniken können Sie Zeichenfolgen mit eingebetteten Zahlen effizient und so sortieren, dass sie der menschlichen Intuition entsprechen.

Das obige ist der detaillierte Inhalt vonWie sortiere ich Zeichenfolgen mit Zahlen auf natürliche Weise in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage