Partage
  • Partager sur Facebook
  • Partager sur Twitter

.sort() VS sorted()

Sujet résolu
    13 février 2017 à 12:48:51

    bonjour à tous, je n'arrive pas à comprendre l'erreur TypeError: 'NoneType' object is not iterable (que Python ne peut donc pas parcourir) lorsque je fais:

    inventaire = [(nom, nombre) for (nombre, nom) in nouveau_inventaire.sort(reverse=True)]

    au lieu de:

    inventaire = [(nom, nombre) for (nombre, nom) in sorted(nouveau_inventaire, reverse=True)]

     qui elle fonctionne à merveille.

    -
    Edité par rodeoshell 13 février 2017 à 12:50:22

    • Partager sur Facebook
    • Partager sur Twitter
    soul_expiration = float("inf")
    Anonyme
      13 février 2017 à 13:04:46

      • sort modifie la liste et retourne None
      • sorted retourne la liste triée

      None n'est pas itérable, par contre ta deuxième solution retournant une liste permet l'itération...

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        13 février 2017 à 13:05:41

        La méthode list.sort() trie la liste sur place (modifie la liste) et ne retourne rien (c'est à dire None), tandis que la fonction sorted() retourne une nouvelle liste triée sans modifier la liste d'origine.

        Dans ton cas il vaut mieux utiliser la fonction.

        Edit: grillé... :D

        -
        Edité par Anonyme 13 février 2017 à 13:06:21

        • Partager sur Facebook
        • Partager sur Twitter
          13 février 2017 à 13:13:15

          je vois :)

          merci beaucoup OldProgrammer et celthon

          • Partager sur Facebook
          • Partager sur Twitter
          soul_expiration = float("inf")
            13 février 2017 à 13:35:31

            Bon à savoir : sorted() fonctionne sur tous les objets itérables, donc également sur les générateurs.

            -
            Edité par nohar 13 février 2017 à 13:35:44

            • Partager sur Facebook
            • Partager sur Twitter
            Zeste de Savoir, le site qui en a dans le citron !
              13 février 2017 à 13:50:43

              noté pour + tard

              merci nohar

              • Partager sur Facebook
              • Partager sur Twitter
              soul_expiration = float("inf")

              .sort() VS sorted()

              × 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