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

Langage Perl Discussion :

manipulation de tableau


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Par défaut manipulation de tableau
    bonjour,

    J'aimerai recuperer tous les element d'un tableau qui ont un nombre de caractere superieur a 10 et les mettre dans un autre tableau.


    le code n'est pas bon c'est juste pour donner une idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @f = map( if ($_ > 10 ){print $_.} , @tab);
    si quelqu'un a une idée
    merci d'avance

  2. #2
    Membre expérimenté Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Par défaut sans carte :p
    personnellement je n'aime pas la fonction map car j'ai un peu de mal à en comprendre toute les subtilités je ferais donc un simple foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach (@tableau_de_base)
    {
      if ( length($_) > 10 )
        {push(@tableau2,$_);}
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Par défaut
    Citation Envoyé par CKLN00 Voir le message
    personnellement je n'aime pas la fonction map car j'ai un peu de mal à en comprendre toute les subtilités je ferais donc un simple foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach (@tableau_de_base)
    {
      if ( length($_) > 10 )
        {push(@tableau2,$_);}
    }


    ça solutionne mon probleme

    merci CKLN00 de ton aide

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    La fonction grep est exactement ce qu'il te faut (la fonction map n'a rien de particulièrement subtile, quel est le problème CKLN00 ?) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @tab2 = grep { lenght $_ > 10 } @tab1;
    --
    Jedaï

  5. #5
    Membre expérimenté Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Par défaut
    Citation Envoyé par Jedai Voir le message
    la fonction map n'a rien de particulièrement subtile, quel est le problème CKLN00 ?
    heuu rien je sais pas c'est juste que les fonction grep et map j'ai du mal à comprendre encore tout les tenants et aboutissant qu'elle impliques mais c'est aussi parce que je ne me suis jamais penché dessus, et pour le map il me semble que tout ce qu'on peut faire avec un map est faisable avec un foreach donc pour l'instant je n'ai pas encore pris le temps d'étudier à fond la fonction map (la grep je n'en n'ai encore jamais eut besoin )

  6. #6
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par CKLN00 Voir le message
    heuu rien je sais pas c'est juste que les fonction grep et map j'ai du mal à comprendre encore tout les tenants et aboutissant qu'elle impliques mais c'est aussi parce que je ne me suis jamais penché dessus, et pour le map il me semble que tout ce qu'on peut faire avec un map est faisable avec un foreach donc pour l'instant je n'ai pas encore pris le temps d'étudier à fond la fonction map
    Effectivement, néanmoins map est largement plus élégant dans les domaines qui lui sont appropriés, par exemple imaginons que tu veuilles créer un tableau des longueurs des chaînes placées dans un autre tableau, la solution naturelle avec foreach sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my @lens;
    foreach my $str (@strings) {
      push @lens, length $str;
    }
    tandis qu'avec map on aura :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @lens = map { length $_ } @strings;
    Cette construction est plus claire (elle exprime directement l'intention initiale tandis que la solution par foreach est indirecte), elle est plus courte et elle est surtout beaucoup plus efficace : map peut savoir quelle taille il doit allouer pour le tableau @lens directement tandis qu'avec push, il y aura plusieurs réallocations.

    Par contre, il arrive qu'on soit tenté d'utiliser un map là où un foreach serait plus approprié et c'est tout aussi dommage car le résultat est nettement moins lisible.

    --
    Jedaï

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Manipulation de tableau
    Par fifi87 dans le forum Assembleur
    Réponses: 1
    Dernier message: 13/12/2006, 17h17
  2. [Tableaux] Manipulation de tableau
    Par Diss dans le forum Langage
    Réponses: 5
    Dernier message: 29/08/2006, 18h08
  3. manipuler un tableau <table> </table>
    Par faico dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/08/2006, 09h51
  4. [Tableaux] Manipulation de tableau
    Par BenoitDenis dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2006, 09h49
  5. Manipulation de tableau
    Par BoBy9 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 22/01/2006, 10h34

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