Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment comparer le max() d'une liste à un int ?

    28 mars 2022 à 8:29:40

    Bonjour je bug sur un exercice en licence info ! 

    Voici mon code:

    ```

    def plus_grande_suitedenb(liste):

        resultat = 0

        dernier=[]

        for i in range(len(liste)):

            if liste[i-1] == liste[i]:

                resultat = resultat + 1

            else:

                dernier.append([resultat+1])

                resultat=0

        return resultat+1,max(dernier)

    """

    Entrée:

    liste --> lst

    Sortie :

    resultat --> int

    Examples:

    >>>plus_grande_suitedenb([3,3,3,2,2,2,2])

    4

    >>>plus_grande_suitedenb([1,1,3,2,2,4,4,4])

    3

    >>>plus_grande_suitedenb([3,3,3,2,7,2,7])

    2

    """

    ```

    A la fin j'aimerai comparer le resultat et le max de la liste "dernier" ! Pour l'instant j'y arrive pas c'est pour ça que je retourner les deux

    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2022 à 10:35:01

      Réveillez vous un peu: le max d'une liste d'entiers est un entier... et si vous ne savez pas comparer 2 entiers, il y a de bons tutos!
      • Partager sur Facebook
      • Partager sur Twitter
        28 mars 2022 à 11:14:04

        le dernier résultat donné en exemple me semble faux, non? ça ne devrait pas retourner 3 (puisqu'il y a trois 3 qui se suivent)?
        • Partager sur Facebook
        • Partager sur Twitter
          28 mars 2022 à 11:33:37

          Bonjour,

          Pour le moulin...

          l = [1, 2,2, 4,4,4,4,4, 1, 4]
          occurrence = 1
          oldnumber = None
          max_occurrence = 0
          
          for number in l:
              if number == oldnumber:
                  occurrence +=1
              else:
                  if occurrence > max_occurrence:
                      max_occurrence = occurrence
                      out = {oldnumber : occurrence}
                  oldnumber = number
                  occurrence = 1
          k, v = list(out.items())[0]
          print(f"La suite contenant le plus d'occurrences qui se\
           suivent contient {v} éléments du nombre {k}")


          édit: En me relisant, je me dis qu'un tupple est préférable à l'utilisation du dico:

          l = [1, 2,2, 4,4,4,4,4, 1, 4]
          
          occurrence = 1
          oldnumber = None
          max_occurrence = 0
          
          for number in l:
              if number == oldnumber:
                  occurrence +=1
              else:
                  if occurrence > max_occurrence:
                      max_occurrence = occurrence
                      out = (oldnumber, occurrence)
                  oldnumber = number
                  occurrence = 1
          
          nbr , occurrence = out
          print(f"La suite contenant le plus d'occurrences qui se\
           suivent contient {occurrence} éléments du nombre {nbr}")
              
          



          -
          Edité par __fabien 28 mars 2022 à 12:28:22

          • Partager sur Facebook
          • Partager sur Twitter
          • J'aime les bananes, le python, le gnu, le pingouin.
            • Vive le libre !
            28 mars 2022 à 12:52:35

            mps a écrit:

            Réveillez vous un peu: le max d'une liste d'entiers est un entier... et si vous ne savez pas comparer 2 entiers, il y a de bons tutos!


            J'aurais aimer que cela sois vrai malheureusement en pratique ça ne marche pas, dût moins chacune de mes tentatives de comparaisons ont résulter d'une erreur car on ne peut pas comparer une liste et un entier.
            • Partager sur Facebook
            • Partager sur Twitter
              28 mars 2022 à 13:13:56

              BastianQLF a écrit:

              mps a écrit:

              Réveillez vous un peu: le max d'une liste d'entiers est un entier... et si vous ne savez pas comparer 2 entiers, il y a de bons tutos!


              J'aurais aimer que cela sois vrai malheureusement en pratique ça ne marche pas, dût moins chacune de mes tentatives de comparaisons ont résulter d'une erreur car on ne peut pas comparer une liste et un entier.

              Bonjour.

              Mais le max d´une liste, on peut lui le comparer à un entier. Faut juste faire une petite recherche personnelle du genre "python maximum liste".

              • Partager sur Facebook
              • Partager sur Twitter

              PB68

                28 mars 2022 à 14:43:49

                BastianQLF a écrit:

                mps a écrit:

                Réveillez vous un peu: le max d'une liste d'entiers est un entier... et si vous ne savez pas comparer 2 entiers, il y a de bons tutos!


                J'aurais aimer que cela sois vrai malheureusement en pratique ça ne marche pas, dût moins chacune de mes tentatives de comparaisons ont résulter d'une erreur car on ne peut pas comparer une liste et un entier.

                Quand on se pose des questions basiques, on lance l'interpréteur et on joue avec:
                >>> L = list(range(10))
                >>> m = max(L)
                >>> m
                9
                >>> m < 3
                False
                >>>

                pour se convaincre que le max d'une liste d'entiers est bien un entier qu'on peut comparer à un autre entier... Et que Python fait le boulot.

                Après soit vous pensez que Python n'est pas un langage fiable (et c'est pas la peine de continuer) soit vous potassez un peu les bases histoire d'être plus confiant de ce que ça fait ou pas...



                • Partager sur Facebook
                • Partager sur Twitter
                  28 mars 2022 à 15:26:52

                  La ligne dernier.append([resultat + 1]) ajoute une liste dans la liste. Ce n'est là qu'un problème parmi d'autres.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 mars 2022 à 18:15:51

                    ЯК a écrit:

                    La ligne dernier.append([resultat + 1]) ajoute une liste dans la liste. Ce n'est là qu'un problème parmi d'autres.


                    ce qui explique peut-être le problème de comparaison du  max() avec un entier :-°
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 mars 2022 à 19:08:15

                      ЯК a écrit:

                      La ligne dernier.append([resultat + 1]) ajoute une liste dans la liste. Ce n'est là qu'un problème parmi d'autres.


                      Oui, pourquoi est-ce que "dernier" est une liste et quel en est l´intérêt dans l´exercice ?
                      • Partager sur Facebook
                      • Partager sur Twitter

                      PB68

                        29 mars 2022 à 2:17:07

                        On ne s'est pas demandé pourquoi la fonction  s'appelait:
                        def plus_grande_suitedenb(liste):
                        Peut-être que @__fabien a compris.
                        Il ne s'agit pas de trouver le maximum de la liste mais la plus longue sous-liste composée d'éléments consécutifs identiques.

                        -

                        L = [1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5]
                        it = iter(L)
                        p = next(it)
                        mm = 0
                        m = 1
                        for c in it:
                            if c == p:
                               m += 1
                            else:
                                if m > mm: mm = m
                                m = 1
                            p = c
                        if m > mm: mm = m
                        print(mm)

                        -

                        Variante de celle de __fabien:

                        -

                        L = [1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5]
                        it = iter(L)
                        p = next(it)
                        S = []
                        s = [0, 0, p]
                        for i, c in enumerate(it, start=1):
                            if c == p:
                               s[1] = i
                            else:
                                S.append(s)
                                s = [i, i, c]
                            p = c
                        S.append(s)
                        d, f, n = max(S, key=lambda t: t[1]-t[0])
                        print(f"De {d} à {f}: {n}")

                        -
                        Edité par PierrotLeFou 29 mars 2022 à 5:03:51

                        • Partager sur Facebook
                        • Partager sur Twitter

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

                        Comment comparer le max() d'une liste à un int ?

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        • Editeur
                        • Markdown