Partage
  • Partager sur Facebook
  • Partager sur Twitter

foreach en python

sans utiliser la boucle for

    13 octobre 2021 à 14:58:46

    bonjour, j'ai créer un petit foreach très simple:

    def foreach(l, f):
        it = iter(l)
    
        while 1:
            try:
                f(next(it))
            except StopIteration:
                break

    comment je peux l'améliorer ?

    • Partager sur Facebook
    • Partager sur Twitter

    le code FAIT le bonheur (pour moi en tous cas)

      13 octobre 2021 à 15:04:15

      pas compris à quoi ça sert ...
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        13 octobre 2021 à 15:09:57

        -

        j'allais dire une connerie.

        et quelle est l'utilité?

        Ha oui! Pourquoi faire simple quand on peut faire compliqué?

        edit:
        [f(i) for i in l]
        ça ne te convient pas?

        -
        Edité par PierrotLeFou 13 octobre 2021 à 15:25:13

        • Partager sur Facebook
        • Partager sur Twitter

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

          13 octobre 2021 à 15:50:11

          PierrotLeFou a écrit:

          -

          j'allais dire une connerie.

          et quelle est l'utilité?

          Ha oui! Pourquoi faire simple quand on peut faire compliqué?

          edit:
          [f(i) for i in l]
          ça ne te convient pas?

          -
          Edité par PierrotLeFou il y a 23 minutes

          y a map pour ça:

          list(map(f,l))
          

          ou

          foreach = map(f,l)
          next(foreach,'end')
          next(foreach,'fini !')
          next(foreach,"tu vas t'arrêtez dis !")
          ...




          -
          Edité par josmiley 13 octobre 2021 à 15:58:26

          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

            13 octobre 2021 à 18:51:25

            en faite j'essai de faire ceci sans utiliser for. map renvoi une liste de None si une fonction ne retourne rien. le but est juste d'executer une fonction avec chaque element de la liste comme args. J'essai faire ceci pour qu'il n'y ai que des valeurs qui soit constant

            quand on fait ceci:

            for i in liste:
                f(i)
            
            # ou encore 
            
            [f(i) for i in liste]

            l'element i change , il n'est donc pas contant. C'est donc pourquoi je ne veux pas utiliser for.

            Quant à ceci:

            it = iter([9, 6, 1])
            print(next(it)) # 9
            print(next(it)) # 6
            print(next(it)) # 1
            
            

            l'element it ne change pas il est donc  constant

            -
            Edité par Le programmeur solitaire 13 octobre 2021 à 19:00:08

            • Partager sur Facebook
            • Partager sur Twitter

            le code FAIT le bonheur (pour moi en tous cas)

              13 octobre 2021 à 19:27:27

              Tu dis que l'élément it est constant. Qu'est-ce qui est constant? Si je fais un autre print(next(it)), j'ai une erreur.
              je ne peux pas recommencer au début de it, il faut que j'en définisse un autre.
              • Partager sur Facebook
              • Partager sur Twitter

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

                13 octobre 2021 à 19:40:45

                ceci est de la programmation fonctionnel: https://fr.wikipedia.org/wiki/Programmation_fonctionnelle

                "La programmation fonctionnelle s'affranchit de façon radicale des effets secondaires (ou effets de bord) en interdisant toute opération d'affectation." 

                "Le paradigme fonctionnel n'utilise pas de machine à états pour décrire un programme, mais un emboîtement de fonctions qui agissent comme des « boîtes noires » que l'on peut imbriquer les unes dans les autres."

                ou encore:

                "La mise en œuvre des langages fonctionnels fait un usage sophistiqué de la pile car, afin de s'affranchir de la nécessité de stocker des données temporaires dans des tableaux"

                L’immutabilité désigne le caractère d’un objet qui ne peut être modifié après sa création en opposition à la mutabilité. Introduire l’immutabilité dans notre base de code, permet de conserver les objects intacts, privés de tout effet de bord et donc de nous simplifier débogage et maintenance

                -
                Edité par Le programmeur solitaire 13 octobre 2021 à 19:50:06

                • Partager sur Facebook
                • Partager sur Twitter

                le code FAIT le bonheur (pour moi en tous cas)

                  13 octobre 2021 à 20:34:09

                  mais ta fonction utilise une boucle et ne retourne rien

                  map retourne un itérateur et next retourne le résultat de la fonction

                  une liste en compréhension ne modifie rien, ses variables sont locales

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Python c'est bon, mangez-en. 

                    14 octobre 2021 à 1:54:26

                    Je ne crois pas que Python soit le meilleur langage pour faire de la programmation fonctionnelle telle que tu la décrit.
                    Je ne sais pas si on peut encore trouver un interpréteur Lisp ?
                    J'ai déjà vu du Elisp il y a un million d'années quand je travaillais avec Emacs ...
                    • Partager sur Facebook
                    • Partager sur Twitter

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

                    foreach en python

                    × 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