Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec les compréhensions de tuples

    27 décembre 2010 à 10:02:21

    Dans le tuto on parle aussi de compréhension de liste mais avec des tuples, j'ai essayé en remplaçant les [] par des ():
    >>> tuple_origine = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    >>> (nb for nb in tuple_origine if nb%2==0)
    

    et ça me donne ça :
    <generator object <genexpr> at 0x02E1CF08>


    Pourquoi ça ne marche pas ?
    • Partager sur Facebook
    • Partager sur Twitter
      27 décembre 2010 à 10:30:47

      Bonjour,

      lis ceci : http://www.siteduzero.com/tutoriel-3-3 [...] tml#ss_part_2 et http://www.siteduzero.com/tutoriel-3-3 [...] tml#ss_part_4 et tu seras à même de comprendre.

      Puis tu verras que ce que tu as fais marche parfaitement mais que ce n'est seulement pas le résultat que tu attendais. :-)
      • Partager sur Facebook
      • Partager sur Twitter
        27 décembre 2010 à 10:30:57

        Salut,

        A mon sens python ne te dis pas que ça ne fonctionne pas, il te dit juste qu'il a crée un objet.

        Mais la deuxieme ligne de ton code est bizarrement écrite.

        Moi j'aurai écrit un truc du style:

        for nb in typle_origine:
            if nb%2==0:
                print nb
        


        Je trouve ça pllus lisible :)
        • Partager sur Facebook
        • Partager sur Twitter
          27 décembre 2010 à 10:33:33

          Quand on ne connait pas le sujet énoncé dans le topic, on n'essaie de ne pas parler.

          Édit : et non, ce n'est pas plus lisible. C'est même tout le contraire.
          • Partager sur Facebook
          • Partager sur Twitter
            27 décembre 2010 à 10:40:11

            Ce que tu crées dans ta seconde ligne est un générateur et non un tuple.

            >>> t = (1, 2, 3)
            >>> gen = (nb for nb in t if nb % 2 != 0)
            >>> gen
            <generator object <genexpr> at 0xb76f5c5c>
            >>> tuple(gen)
            (1, 3)
            >>> tuple(nb for nb in t if nb % 2 != 0)
            (1, 3)
            
            • Partager sur Facebook
            • Partager sur Twitter
            Zeste de Savoir, le site qui en a dans le citron !
              27 décembre 2010 à 10:42:55

              Joyeux noël à toi aussi tcpc_...

              Un forum c'est fait pour essayer de s'aider les uns les autres nan?
              Certes je ne suis pas un expert en python, mais ca ne t'autorise pas à me parler de cette façon.
              Qu'est ce que ça peut te faire si j'essaie d'aider les autres à mon niveau?? o_O
              Et quand bien même, mon avis n'est pas le meilleur du monde, j'essaie de m'améliorer aussi en échangeant avec la communauté.

              Prout.
              • Partager sur Facebook
              • Partager sur Twitter
                27 décembre 2010 à 10:51:11

                Citation : Fort en pommes

                Joyeux noël à toi aussi tcpc_...

                Un forum c'est fait pour essayer de s'aider les uns les autres nan?
                Certes je ne suis pas un expert en python, mais ca ne t'autorise pas à me parler de cette façon.
                Qu'est ce que ça peut te faire si j'essaie d'aider les autres à mon niveau?? o_O
                Et quand bien même, mon avis n'est pas le meilleur du monde, j'essaie de m'améliorer aussi en échangeant avec la communauté.

                Prout.



                +1

                et prout aussi.
                • Partager sur Facebook
                • Partager sur Twitter
                Zeste de Savoir, le site qui en a dans le citron !
                  27 décembre 2010 à 10:56:29

                  -2

                  Le sujet parle des compréhensions de listes et Fort en pommes ne sait vraisemblablement pas ce que c'est : “la deuxieme ligne de ton code est bizarrement écrite”.

                  Il propose même la construction qu'est censé remplacer les compréhensions de listes, de manière plus judicieuse... J'ai envie de dire que son post est un peu inutile et peut embrouiller l'auteur du sujet.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 décembre 2010 à 11:01:06

                    Certes, ton point de vue se défend et je suis assez d'accord globalement, mais ce n'est pas tant le fond que la forme qui me dérange... Le ton que tu prends pour dire ça est vachement sec, alors qu'à la base Fort en Pommes ne répond que par pure bonne volonté. Que son post risque d'embrouiller le PO, OK, mais lui répondre de cette manière, c'est un peu limite, d'où mon plussainproute. ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Zeste de Savoir, le site qui en a dans le citron !
                      27 décembre 2010 à 11:07:59

                      Citation : Fort en pommes

                      Salut,

                      A mon sens python ne te dis pas que ça ne fonctionne pas, il te dit juste qu'il a crée un objet.

                      Mais la deuxieme ligne de ton code est bizarrement écrite.

                      Moi j'aurai écrit un truc du style:

                      for nb in tuple_origine:
                          if nb%2==0:
                              print nb
                      


                      Je trouve ça plus lisible :)


                      pas forcement faux, juste mal dit.
                      print ne devrait servir que pour débugger et les interfaces console.
                      tu voulais sans doute dire ceci ...
                      output = ()
                      for nb in tuple_origine:
                          if nb%2==0:
                              output += (nb,)
                      
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Python c'est bon, mangez-en. 

                        27 décembre 2010 à 11:15:51

                        J'aurai pas dit mieux NohaR. ^^

                        Effectivement, ma proposition sur la "forme du code" est erronée, par contre pou l'objet "generator" j'avais bon! :p

                        Allez, hop! L'incident est clos! :)

                        Que le magnificient gardien poilu des trois montagnes du Valhalla chante vos louanges et illumine vos oreilles pour l'éternité!

                        Bonnes fêtes de fin d'année à tous les Zéros! :p

                        EDIT: @joesmiley: Oui, c'est à peu près ce à quoi je pensais.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Problème avec les compréhensions de tuples

                        × 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