J'ai des valeurs comme celle-ci:
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'])
Je veux trier les valeurs de chacun set
dans un ordre croissant. Je ne veux pas trier entre les ensembles, mais les valeurs de chaque ensemble.
list
.std::set
est commandé.Réponses:
À partir d'un commentaire:
C'est facile. Pour tout ensemble
s
(ou tout autre élément itérable),sorted(s)
renvoie une liste des éléments des
dans l'ordre trié:Notez que cela
sorted
vous donne unlist
, pas unset
. C'est parce que tout l'intérêt d'un ensemble, à la fois en mathématiques et dans presque tous les langages de programmation , * est qu'il n'est pas ordonné: les ensembles{1, 2}
et{2, 1}
sont le même ensemble.Vous ne voulez probablement pas vraiment trier ces éléments sous forme de chaînes, mais sous forme de nombres (donc 4.918560000 viendra avant 10.277200999 plutôt qu'après).
La meilleure solution est le plus susceptible de stocker les nombres sous forme de nombres plutôt que de chaînes en premier lieu. Mais sinon, il vous suffit d'utiliser une
key
fonction:Pour plus d'informations, consultez le HOWTO de tri dans la documentation officielle.
* Voir les commentaires pour les exceptions.
la source
set
signifie "liste triée", et vous devez direunordered_set
"set"…std::set