Partage
  • Partager sur Facebook
  • Partager sur Twitter

Liste trié par ordre croissant

Besoin d'aide pour comprendre

    1 février 2023 à 18:08:11

    Bonjour,

    j'ai besoin de votre aide pour comprendre comment trier une liste sur python dans l'ordre croissant

    Merci de votre compréhension,

    Bonne soirée

    • Partager sur Facebook
    • Partager sur Twitter
      1 février 2023 à 18:30:14

      Bonjour.

      Une petite requête sur votre moteur de recherche favori vous aurait permis de tomber notamment sur ce lien.

      • Partager sur Facebook
      • Partager sur Twitter

      PB68

        1 février 2023 à 20:49:24

        peyomichelena a écrit:

        j'ai besoin de votre aide pour comprendre comment trier une liste sur python dans l'ordre croissant


        Utiliser des fonctions Python prédéfinies pour trier une liste ? ou alors écrire toi-même une fonction Python qui réalise un tri dans l'ordre croissant ?

        Pour la première question, PB68 a donné un lien et en voici un autre, grosso modo, tu utilises la fonction sorted.

        Pour la 2e, il existe plusieurs algorithmes que tu peux coder  toi-même en Python parmi lesquels le tri par sélection, sans doute le plus simple.

        • Partager sur Facebook
        • Partager sur Twitter
          3 février 2023 à 19:01:51

          PB68 a écrit:

          Bonjour.

          Une petite requête sur votre moteur de recherche favori vous aurait permis de tomber notamment sur ce lien 


          Merci de vos aides

          -
          Edité par peyomichelena 3 février 2023 à 19:03:40

          • Partager sur Facebook
          • Partager sur Twitter
            3 février 2023 à 19:16:24

            Je n'avais jamais fait de tri par sélection en Python. En voici un exemple simple:
            -
            def selection(L):
                lg = len(L)
                for i in range(lg-1):
                    m = i
                    for j in range(i+1, lg):
                        if L[m] > L[j]:   m = j
                    L[m], L[i] = L[i], L[m]
            #
            L =[3, 5, 2, 1, 6, 3]
            selection(L)
            print(L)
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              4 février 2023 à 11:31:07

              Voici une solution pour le tri par sélection,

              def sort_selection(arr):
                  for i in range(len(arr) - 1):
                      min_index = min(range(i, len(arr)), key=arr.__getitem__)
                      arr[i], arr[min_index] = arr[min_index], arr[i]
                  return arr
              
              
              L = [3, 5, 2, 1, 6, 3]
              sort_selection(L)
              print(L)
              



              • Partager sur Facebook
              • Partager sur Twitter

              Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
              La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                4 février 2023 à 18:01:29

                PierrotLeFou a écrit:

                Je n'avais jamais fait de tri par sélection en Python. En voici un exemple simple:
                -
                def selection(L):
                    lg = len(L)
                    for i in range(lg-1):
                        m = i
                        for j in range(i+1, lg):
                            if L[m] > L[j]:   m = j
                        L[m], L[i] = L[i], L[m]
                #
                L =[3, 5, 2, 1, 6, 3]
                selection(L)
                print(L)

                Exactement le code que j'avais dans mes archives (sauf les noms de variables). Sur une liste de 10000 entiers, met 2.59 s.

                fred1599 a écrit:

                Voici une solution pour le tri par sélection,

                def sort_selection(arr):
                    for i in range(len(arr) - 1):
                        min_index = min(range(i, len(arr)), key=arr.__getitem__)
                        arr[i], arr[min_index] = arr[min_index], arr[i]
                    return arr
                
                
                L = [3, 5, 2, 1, 6, 3]
                sort_selection(L)
                print(L)
                



                Bien vu, plus efficace que le précédent : sur une liste de 10000 entiers, met 2.04 s. Remarque : ce tri se veut l'analogue de la méthode sort et donc devrait renvoyer None (ça n'a pas d'intérêt de renvoyer L).

                Autres possibilités plus rapides (tris pas en place mais la liste donnée en argument est préservée, ce qui est l'essentiel) :

                def oneline(L):
                    L[:]=[(min(L), L.remove(min(L)))[0] for _ in range(len(L)-1)]+[L[0]]


                Temps : 1.46 s.

                def steps(L):
                    M=[]
                    for _ in range(len(L)):
                        mini=min(L)
                        M.append(mini)
                        L.remove(mini)
                    L[:]=M


                Temps : 0.87 s

                • Partager sur Facebook
                • Partager sur Twitter
                  5 février 2023 à 4:08:20

                  Comme quoi le traitement des indices coûte cher. Le remove se fait plus rapidement que j'aurais pensé.
                  Tout se fait de plus en plus vite car la liste L diminue de grandeur.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le Tout est souvent plus grand que la somme de ses parties.

                    5 février 2023 à 8:23:42

                    PierrotLeFou a écrit:

                    Comme quoi le traitement des indices coûte cher. 


                    Oui, et c'est pour ça que j'ai trouvé cette ligne 

                    fred1599 a écrit:

                            min_index = min(range(i, len(arr)), key=arr.__getitem__)
                    



                    intéressante.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Liste trié par ordre croissant

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown