Ich habe solche Werte:
set(['0.000000000', '0.009518000', '10.277200999', '0.030810999', '0.018384000', '4.918560000'])
set(['4.918859000', '0.060758000', '4.917336999', '0.003949999', '0.013945000', '10.281522000', '0.025082999'])
Ich möchte die Werte set
in aufsteigender Reihenfolge sortieren . Ich möchte nicht zwischen den Sätzen sortieren, sondern die Werte in jedem Satz.
list
.std::set
ist bestellt.Antworten:
Aus einem Kommentar:
Das ist einfach.
s
Gibt für jede Menge (oder alles andere iterierbare)sorted(s)
eine Liste der Elementes
in sortierter Reihenfolge zurück:Beachten Sie,
sorted
dass Sie einlist
, nicht einset
. Das liegt daran, dass der springende Punkt einer Menge, sowohl in der Mathematik als auch in fast jeder Programmiersprache *, darin besteht, dass sie nicht geordnet ist: Die Mengen{1, 2}
und{2, 1}
die gleiche Menge.Sie möchten diese Elemente wahrscheinlich nicht wirklich als Zeichenfolgen sortieren, sondern als Zahlen (also wird 4.918560000 vor 10.277200999 und nicht nachher kommen).
Die beste Lösung besteht darin, die Zahlen in erster Linie als Zahlen und nicht als Zeichenfolgen zu speichern. Wenn nicht, müssen Sie nur eine
key
Funktion verwenden:Weitere Informationen finden Sie im HOWTO zum Sortieren in den offiziellen Dokumenten.
* Ausnahmen finden Sie in den Kommentaren.
quelle
set
dies "sortierte Liste" bedeutet, und Sie müssen sagenunordered_set
, dass "gesetzt" bedeutet ...std::set
jedoch die Reihenfolge an (nicht nur auf offensichtliche Weise über die API; die Bestellfunktion ist tatsächlich Teil des Typs eines bestimmten Satzes). Die Tatsache, dass die Elemente immer nach einer streng schwachen Reihenfolge sortiert bleiben, ist Teil der eigentlichen Definition des Konzepts. Ihr Argument ist also umstritten. Aber selbst wenn es nicht so wäre, warum sollte es wichtig sein? Sets sind in fast jeder Programmiersprache ungeordnet, genau wie in Mathe. Die Tatsache, dass es eine abgelegene Sprache gibt, die das Wort verwendet, um etwas anderes zu bedeuten, macht diese Aussage nicht weniger wahr.