IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Appliquer une fonction à une liste


Sujet :

Python

  1. #1
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut Appliquer une fonction à une liste
    Salut à tous.

    Je cherche une fonction built-in similaire à filter ou map, à la différence près que je veux juste appliquer une fonction à chaque objet de l'iterateur. Je n'ai pas besoin de liste, ni dict ni rien en retour.

    Voici ce que cette fonction donnerait si elle était écrite en python.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def call(func, list):
        for i in list:
            func(i)
    Ou mieux encore, une fonction qui ferait simplement ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def call(list):
        for i in list:
            i()

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Je ne comprends pas le problème.
    Mais j'arrive à proposer une réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def call(list):
        [ func(i) for i in list]
     
    def func(x):
        print 3.1 *x
     
    list = [2,6,45,1002,3,290]
    call(list)

  3. #3
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Ca ne convient pas hélas. Je cherche l'équivalent built-in des deux méthode que j'ai écrites en python. Je ne veux pas de liste ni quoi que ce soit en retour, pour des raisons de performance.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Ça veut dire quoi "l'équivalent built-in" STP ?

  5. #5
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Ca signifie que je recherche une méthode écrite en C, comme filter, apply, all ou encore any. Je cherche ça pour ne pas devoir faire appel à l'interpréteur dans ces boucles et gagner un temps appréciable pour les longues listes.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Si je comprends bien,
    quand on écrit un code en Python, on assemble en fait par un liant pythonien des fonctions écrites en C ;
    liant pythonien, ça veut dire que quand le programme tourne, les fonctions tournent dans leur individualité en C mais que les relations des fonctions du code entre elles est assuré par l'interpréteur Python ?
    C'est à peu près ça ?

    Donc tu veux un nom de fonction sous lequel il y a du C , qui ne renvoit rien mais qui agit sur les élements d'un itérateur ?
    Est-ce qu'on peut dire que la fonction que tu cherches agirait "en place" ?

    Moi pas connaître.
    Si cela n'existe pas (bizarre d'ailleurs je trouve), pourquoi ne pas écrire toi-même la fonction en C directement ?
    je n'ai encore pas pratiqué ce genre de choses mais je lis dans le Hors-Série Linux Magazine consacré à Python que

    - «il est possible d'inclure des bouts de code C++ directement dans le code Python sous forme de chaIne de caractères en utilisant le module scipy.weave. Celui-ci compile le bout de code lorsqu'il est appelé pour la première fois et s'occupe de faire le passage d'arguments de Python au C++.»

    - «le projet le plus ambitieux et le plus prometteur pour mélanger langages compilés et Python est Cython.Ce projet introduit un nouveau langage qui ressemble comme deux gouttes d'eau à Python, mais permet de spécifier des informations complémentaires comme des déclarations de type. Le code Cython est transformé en du code C, qui est compilé en langage machine, mais qui forme une bibliothèque liée à la machine virtuelle Python. La machine virtuelle Python est utilisée pour exécuter les parties typéesdynamiquement, qui ne s'exécuteront pas plus vite que du code Python normal; cependant les opérations pour lesquels Cython peut déterminer les types de toutes les variables seront aussi rapides que du code C normal»

  7. #7
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par eyquem Voir le message
    Donc tu veux un nom de fonction sous lequel il y a du C , qui ne renvoit rien mais qui agit sur les élements d'un itérateur ?
    Est-ce qu'on peut dire que la fonction que tu cherches agirait "en place" ?
    Tu as bien compris il me semble, mais ton explication me paraît fort compliquée
    Par contre, non, je ne cherche pas une fonction qui agit "en place", puisqu'elle ne doit rien modifier. Elle doit juste appeler des fonctions, sans valeur de retour, ni remplacement, ni aucune autre génération de données.

    Ce SciPy weave me parait très intéressant, je vais y jeter un oeuil, merci.
    Pour ce qui est de Cython par contre... je suis moins convaincu. J'ai jeté un oeuil aux fichiers .c générés... nom d'une pipe, pour 4 lignes de code python il me sort 5000 lignes C (alors qu'en les écrivant nous même, 50 suffiraient largement.)

    Mais effectivement, si je ne trouve pas de fonction adaptée, je finirai bien par l'écrire moi-même

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    «je veux juste appliquer une fonction à chaque objet de l'iterateur. Je n'ai pas besoin de liste, ni dict ni rien en retour.»

    «Par contre, non, je ne cherche pas une fonction qui agit "en place", puisqu'elle ne doit rien modifier.»
    Une fonction qui ne renvoit rien et qui agit sans rien modifier....

    Elle fait quoi alors ??
    Peut-on avoir une idée de ce qu'elle fait ?

  9. #9
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Eh bien pour chaque élément qui est dans la liste, elle doit appeler une fonction avec cet élément comme paramètre. C'était la première fonction.
    Ou alors, pour chaque élément de cette liste, il l'appelle (en considérant bien sur que la liste ne contient que des callable). C'était la seconde fonction.

    Edit: Ah, mais je comprends pourquoi tu ny vois aucun sens... Le fait est que ces fonctions ont un effet de bord. Dans mon cas elles agissent sur un socket.

Discussions similaires

  1. appliquer une fonction à une fonction
    Par stracoma dans le forum C++
    Réponses: 6
    Dernier message: 20/03/2015, 16h35
  2. Existe-t-il une fonction qui liste les périodes mensuelles ?
    Par clavier12AZQSWX dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/06/2014, 09h15
  3. Réponses: 3
    Dernier message: 23/09/2010, 17h05
  4. Réponses: 1
    Dernier message: 10/04/2008, 10h02
  5. passer en paramettre d'une fonction une fonction
    Par RoM3Ro dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/06/2006, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo