[Python] Sortieren

Einführung

Als ich das Problem mit CodeIQ zum ersten Mal seit einiger Zeit betrachtete, gab es ein Problem mit dem Sortieren in Python3, und zu diesem Zeitpunkt lernte ich zum ersten Mal das Sortieren in Python3, daher werde ich es hier als Memo aufzeichnen.

* Wenn Sie Fehler oder Vorschläge haben, dies zu tun, würden wir uns freuen, wenn Sie uns etwas beibringen könnten.

Elemente sortieren

Sortieren Sie die Elemente in aufsteigender Reihenfolge

Sortieren wir zunächst die Elemente in der Liste in aufsteigender Reihenfolge. Die dort verwendete Methode ist sort (). Wenn es sich um eine Zeichenfolge handelt, wird sie in der Reihenfolge des Zeichencodes sortiert. Wenn es sich um einen numerischen Wert handelt, wird sie in aufsteigender Reihenfolge sortiert.

exSort01.py


wordList = ["F","A","X"]  #Liste der Zeichenfolgen
numberList = [4,6,2]  #Liste der Nummern

wordList.sort()
print (wordList)  #Ausgabeergebnis:["A","F","X"]

numberList.sort()
print (numberList)  #Ausgabeergebnis:[2,4,6]

Elemente umgekehrt sortieren

Dieses Mal werde ich versuchen, die Reihenfolge umzukehren, in der die Elemente aktuell angeordnet sind. Es verwendet eine Methode namens "reverse ()".

exSort02.py


wordList = ["F","A","X"]  #Liste der Zeichenfolgen
numberList = [4,6,2]  #Liste der Nummern

wordList.reverse()
print (wordList)  #Ausgabeergebnis:["X","A","F"]

numberList.reverse()
print (numberList)  #Ausgabeergebnis:[2,6,4]

Wie Sie sehen können, ist es nicht in absteigender Reihenfolge sortiert, sondern nur in umgekehrter Reihenfolge. Wie sortieren Sie in absteigender Reihenfolge ...

Sortieren Sie die Elemente in absteigender Reihenfolge

Diesmal möchte ich sie also in absteigender Reihenfolge anordnen. Sie können dies leicht tun, indem Sie das bisherige Lernen anwenden. Eine mögliche Prozedur besteht darin, zuerst die Sortiermethode auszuführen und in absteigender Reihenfolge zu sortieren. Und ich denke, Sie können dies in absteigender Reihenfolge tun, indem Sie die umgekehrte Methode ausführen.

Also habe ich es so gemacht.

exSort03_01.py


wordList = ["F","A","X"]  #Liste der Zeichenfolgen
numberList = [4,6,2]  #Liste der Nummern

wordList.sort()
wordList.reverse()
print (wordList)  #Ausgabeergebnis:["X","F","A"]

numberList.sort()
numberList.reverse()
print (numberList)  #Ausgabeergebnis:[6,4,2]

erledigt! Aber wie auch immer. Zwei Zeilen sind umständlich. Kannst du es eine Zeile machen ... Also habe ich es so umgeschrieben.

exSort03_01.py


wordList = ["F","A","X"]  #Liste der Zeichenfolgen
numberList = [4,6,2]  #Liste der Nummern

wordList.sort(reverse=True)
print (wordList)  #Ausgabeergebnis:["X","F","A"]

numberList.sort(reverse=True)
print (numberList)  #Ausgabeergebnis:[6,4,2]

Oh! Es ist fertig und ordentlich in einer Zeile!

Mehrdimensionale Listensortierung

Ich verstehe die eindimensionale Art. Als nächstes folgt die mehrdimensionale Sortierung. Zum Beispiel, wenn Sie die folgende Liste haben:

list = [[10,4],[3,6],[4,6],[5,0],[4,9],[2,0]]

Lassen Sie uns diese Liste mit dem ersten Element in aufsteigender Reihenfolge und dann mit dem zweiten Element in aufsteigender Reihenfolge platzieren

[[2,0], [5,0], [10,4], [3,6], [4,6], [4,9]] Was ist, wenn Sie das Ergebnis erhalten möchten?

Als ich es nachgeschlagen habe, gab es einen Artikel mit dem Titel "Nach mehreren Schlüsseln sortieren" und einen Artikel mit dem Titel "Notenliste für Schüler" auf Japanisch. Es wurde über das Thema geschrieben, in absteigender Reihenfolge der arithmetischen Noten ordnen zu wollen (der Artikel beschreibt die absteigende Reihenfolge). Also habe ich mich darauf bezogen und folgendes geschrieben!

exSort04.py


list = [[10,4],[3,6],[4,6],[5,0],[4,9],[2,0]]
list.sort(key=lambda x:x[0])
list.sort(key=lambda x:x[1])
print (list)

Dabei wird zunächst versucht, in aufsteigender Reihenfolge zu sortieren. Verwenden Sie unter diesen den "Lambda-Ausdruck", um den Schlüssel des ersten Elements auszuwählen und aufzusteigen, und verwenden Sie dann denselben "Lambda-Ausdruck", um den Schlüssel des zweiten Elements auszuwählen. In aufsteigender Reihenfolge. vielleicht....

Es wird verwendet, wenn eine Funktion wie die def-Anweisung namens "Lambda-Ausdruck" erstellt wird, und es scheint, dass der Name von Lisp stammt ... ("[[Python] [Studie] Einführung in Python (27) --lambda-Ausdruck ](Von http://atkonn.blogspot.jp/2008/02/python-python27-lambda.html) ”)

lambda Argument 1, Argument 2, ..., Argument N: Formel zum Finden der Antwort, die Sie zurückgeben möchten

Es scheint so zu schreiben. Übrigens, wenn Sie das erste Element in aufsteigender Reihenfolge erstellen möchten, vergleichen Sie das erste mit demselben Wert mit dem zweiten Wert und nur dieses in aufsteigender Reihenfolge. Sie können wie folgt schreiben.

exSort04.py


list = [[10,4],[3,6],[4,6],[5,0],[4,9],[2,0]]
list.sort(key=lambda x:(x[0],x[1]))
print (list)

Dies scheint "ein Geheimnis in der Standardvergleichsfunktion cmp ()" zu haben. Weitere Informationen hierzu finden Sie im Artikel "Nach mehreren Schlüsseln sortieren".

Es scheint, dass es auch eine Methode namens "sortiert ()" zum Sortieren gibt, aber diesmal ist es ein Bonus.

Feedback

Ich habe das Feedback des Problemanbieters so schnell wie möglich hinzugefügt. Sehr früh! Die Antwort auf die Frage war richtig, "Es gibt eine Möglichkeit, die" itemgetter "-Methode des" operator "-Moduls zu verwenden." was ist das? !! Ich habe es nachgeschlagen.

Dann "9.9. Operator - Standardoperator im Funktionsformat" und "[Sort HOW TO](http: //docs.python) .jp / 3.4 / howto / sorting.html) ”wurde gefunden. Beide Inhalte der Geschichte sind nützlich. Wenn Sie sie also noch nicht gelesen haben, möchten Sie sie möglicherweise lesen.

Kommen wir zurück zur Geschichte. Wenn Sie abschließend wie folgt schreiben, ist die bisherige Arbeit in einer Zeile abgeschlossen!

exSort04.py


from operator import itemgetter
list = [[10,4],[3,6],[4,6],[5,0],[4,9],[2,0]]
list.sort(key=itemgetter(1,0))
print (list)

Wunderschönen.

Dieses Mal habe ich ein Beispiel gegeben, bei dem die Prozedur nur zweimal ausgeführt wird. Es scheint also, dass die Anzahl der Zeilen nicht verringert wurde, da sie den Satz " from operator import itemgetter "enthält, der die itemgetter -Methode des operator-Moduls aufruft. Wenn dies jedoch mehr als dreimal durchgeführt wird, verringert sich der Umfang der Beschreibung definitiv. Wenn Sie sich den bisherigen Ablauf ansehen, können Sie verstehen, warum Sie "list.sort (key = itemgetter (1,0))" schreiben sollten, also werde ich es erklären. Wenn Sie es nicht verstehen, können Sie es herausfinden, indem Sie sich den Inhalt der folgenden "itemgetter" -Methode ansehen ...?

Gemäß "10.3. Operator - Standardoperator im Funktionsformat" lautet die Methode "itemgetter" wie folgt. Ich wünschte ich hätte.

itemgetter Methode


def itemgetter(*items):
    if len(items) == 1:
        item = items[0]
        def g(obj):
            return obj[item]
    else:
        def g(obj):
            return tuple(obj[item] for item in items)
    return g

Aha.

Referenzseite

Recommended Posts

[Python] Sortieren
Python #sort
Blasensortierung in Python
Python selbst erstellte Klassensortierung
[Memo] Python 3-Listensortierung
Python-Spickzettel
Benutzerdefinierte Sortierung in Python3
[Python] Sammlungstypen sortieren
Sortieren
Python-Modul-Importe alphabetisch sortieren
Sortieren Sie den Pfad natürlich in Python
Python Basic Dikt Sortierreihenfolge
Sortieren Sie große Dateien mit Python
Absteigende Sorte mit Mongodb in Python
Python-Anfänger organisieren Blasensorten
Sortieren nach Datum in Python
Über Python sort () und reverse ()
Kafka Python
Sortierung einfügen
[Python] Zufällige Verarbeitung (erstellen, auswählen, sortieren)
Python-Grundlagen ⑤
Python-Zusammenfassung
Python-Einschlussnotation
Python-Technik
Python studieren
Python-Memorandum
Python FlowFishMaster
Python-Dienst
Python-Tipps
[Python] Sortierbar nach mehreren Bedingungen sortieren
Python-Funktion ①
Python-Grundlagen
Python-Memo
Ufo-> Python (3)
Python-Einschlussnotation
Installieren Sie Python
Python Singleton
Python-Grundlagen ④
Python-Memorandum 2
Python-Memo
Python Jinja2
Python-Inkrement
atCoder 173 Python
[Python] -Funktion
Python-Installation
Python installieren 3.4.3.
Versuchen Sie Python
Python-Memo
Python iterativ
Python-Algorithmus
Python2 + word2vec
[Python] -Variablen
Python sys.intern ()
Python-Tutorial
Python-Fraktion
Python Underbar Das ist was
Python-Zusammenfassung
Starten Sie Python
Hinweis: Python