Partage
  • Partager sur Facebook
  • Partager sur Twitter

soustraire terme de 2 listes de meme tailles

Sujet résolu
    20 avril 2015 à 16:42:58

    Bonjour, je suis confrontée a un problème en apparence simple mais j'ai rien trouvé qui fonctionne sur internet.

    Je dispose de 2 listes de même tailles:

    a=[1,2,3,4,5]

    b=[7,8,9,1,2]

    Existe t'il une fonction permettant de soustraire les termes entre eux et de sauvegarder le résultat dans une autre liste.

    c=[6,6,6,-3,-3]

    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2015 à 17:32:47

      >>> a = [1, 2, 3, 4, 5]
      >>> b = [7, 8, 9, 1, 2]
      >>> c = [b_elt - a_elt for a_elt, b_elt in zip(a, b)]
      >>> c
      [6, 6, 6, -3, -3]
      
      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoir, le site qui en a dans le citron !
        21 avril 2015 à 8:52:33

        Merci, j'ai encore une question, peut on rajouter dans la même expression, un autre calcule ?, une fois la soustraction faite, je voudrais multiplier tous les terme par 5 par exemple ? j'aimerais savoir si on peut le mettre dans le calcule directement dans:

        c = [b_elt - a_elt for a_elt, b_elt in zip(a, b)]

        Ou bien faut rajouter une ligne de code.

        • Partager sur Facebook
        • Partager sur Twitter
          21 avril 2015 à 8:58:54

          Salut,

          L'écriture que t'as donné nohar est équivalente à:

          ma_liste = []
          #zip permet de parcourir plusieurs itérable en même temps
          for a_elt, b_elt in zip(a,b):
              #append ajoute à la liste ce que tu souhaite
              #Autrement dit, c'est ici que tu choisis l'opération a effectuée
              ma_liste.append(b_elt - a_elt)



          • Partager sur Facebook
          • Partager sur Twitter
          Précepte: Le mieux est l'ennemi du bien
            21 avril 2015 à 9:06:46

            C'est tout bete:

            c = [(b_elt - a_elt)*5 for a_elt, b_elt in zip(a, b)]


            Merci pour votre aide, je préfère l'écriture nohar, qui tien sur 1 ligne,k car j'ai 54 calcule de ce type a faire.

            Niveau perf par contre, c'est bon ou pas ?, car il s'agit de liste contenant 24000 valeurs chacune.

            J'ai essayée avec 32 opérations, c'est quasi instantanée, donc je ne m’inquiète pas trop.

            • Partager sur Facebook
            • Partager sur Twitter
              21 avril 2015 à 9:27:02

              Niveau perf par contre, c'est bon ou pas ?, car il s'agit de liste contenant 24000 valeurs chacune.

              Si vraiment t'en es à évaluer les perfs d'une construction syntaxique (ce qui est une erreur de débutant dans 99,99% des cas), sache que cette syntaxe ( list comprehension ) est même plus rapide qu'une boucle for explicite.

              -
              Edité par nohar 21 avril 2015 à 9:27:56

              • Partager sur Facebook
              • Partager sur Twitter
              Zeste de Savoir, le site qui en a dans le citron !
                21 avril 2015 à 9:37:52

                non, je parlais pas de la syntaxe, mais de la fonction zip, par rapport au calcule que p'on peut faire avec numpy par exemple.
                • Partager sur Facebook
                • Partager sur Twitter
                  21 avril 2015 à 10:20:14

                  Franchement, ne te prends pas la tête avec les perfs tant que tu n'as pas profilé ton code pour en conclure que c'est cette ligne qui pose problème.

                  Donald Knuth (un type qui avait oublié d'être con), disait :

                  Premature optimization is the root of all evil.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Zeste de Savoir, le site qui en a dans le citron !

                  soustraire terme de 2 listes de meme tailles

                  × 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