Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / Tri d'une liste

Tri d'une liste

Remonter à Forum général Python
  • Tri d'une liste

    Envoyé par hulmich le 17 Mars 2005 à 13:58
    Hello,

    quelle est la meilleure méthode (la plus rapide) pour trier des elements d'une liste ?

    • Re: Tri d'une liste

      Envoyé par alain_72 le 17 Mars 2005 à 16:12
      la méthode .sort()
      liste = [10, 5, 6, 3]
      print liste.sort()
      [3, 5, 6, 10]


    • Re: Tri d'une liste

      Envoyé par hulmich le 18 Mars 2005 à 12:53
      mince c'est de ma faute, j'aurais du mieux détailler :

      En fait ce ne sont pas des nombres mais des listes d'objets.

      [ob1, ob2, ob3], etc

      et je dois les trier suivant un attribut particulier de l'objet (ob.param)

      le sort() direct ne marche pas bien,
      comment lui dire de trier sur un attribut des objets. :huh:
    • Re: Tri d'une liste

      Envoyé par tarek le 18 Mars 2005 à 14:16
      tu peux procéder ainsi (une méthode parmi d'autres) :


      list_ = (ob1, ob2, ob3)
      sort_list = ()

      for item in list_:
      sort_list.append((item.param, item))

      sort_list.sort()

      result_list = ()
      for item in sort_list:
      result_list.append(item(1))

      list_ = result_list

      ** remplacer les ( ) par des crochets quand il convient, je n'ai pas su le faire sans que cmfboard interprete le texte entre crochet... :zz:

      Sachant que les boucles peuvent etre remplacées par des map()

      créer une liste spécialement pour le tri est une des méthodes les plus rapides
    • Re: Tri d'une liste

      Envoyé par gawel le 18 Mars 2005 à 17:42
      liste = [ obj1,obj2,obj3 ]
      liste = [ (o.id,o) for o in liste ]
      liste.sort()
      liste = [ o for (k,o) in liste ]
    • Re: Tri d'une liste

      Envoyé par zyon le 18 Mars 2005 à 17:50
      Ou alors : list.sort(lambda a,b:cmp(a.monattribut, b.monattribut))
Rendu par Ploneboard