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 :

Comparer liste avec tableau


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Par défaut Comparer liste avec tableau
    Bonjour,

    Je cherche a comparer une liste avec un tableau.

    Par exemple:
    my $liste = "2 3 4"; #donc 3 éléments séparés par des espaces
    my @tableau=(1,2,3,4,5,6); #mon tableau

    Je cherche a vérifier que touts les éléments de la liste sont bien présent dans le tableau.
    Je me demandai si c'etait possible a faire en PERL ou si je devai d'abord transformer ma liste en tableau.
    Le but est que le code soit facilement relu par le développeur suivant.

    Merci pour de me donner votre avis,
    Benjamin

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Par défaut
    Je pense avoir trouver une solution sur internet qui est intelligente et plutôt clair:
    @tab1=(4,5,6);
    @tab2=(1,2,3,4,5,6,7,8,9);
    my %hash = map{$_ => 1} (@tab1, @tab2);
    my @tab = keys %hash;
    my $nombre_elements_commun = @tab1 + @tab2 - @tab;
    print "nombre_elements_commun : $nombre_elements_commun\n";

    Je vais donc bien commencer par transformer ma liste en tableau.

    Merci,
    Benjamin

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Par défaut
    Pour ceux qui seraient intéréssés, voici un code permettant de
    1- Transformer une liste en tableau
    2- Comparer les elements entre tableaux
    Point interessant: Si il y a des doublons (comme j'en ai mis dans la liste $list1, ça fonctionne aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $list1="4 6 8 1 4"; # ma liste de depart. Les elements sont séparés par un espace
    my @tab1 = split(/ /,$list1); # je split la liste en utilisant les espaces
    $tailletab1 = scalar @tab1; # je recupere la taille du nouveau tableau
    print "t : @t\n";
    @tab2=(1,2,3,4,5,6,7,8,9);
        my %hash = map{$_ => 1} (@tab1, @tab2);
        my @tab = keys %hash;
        my $nombre_elements_commun = @tab1 + @tab2 - @tab;
    print "nombre_elements_commun : $nombre_elements_commun\n";
     
    if($nombre_elements_commun == $tailletab1)
    {
    print "Les elements de la liste \$list1 sont tous présents dans le tableau \@tab2 \n";
    }else
    {
    print "Les elements de la liste \$list1 NE sont PAS tous présents dans le tableau \@tab2 \n";
    }
    En espérant que ça puisse aider,
    Benjamin.

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

Discussions similaires

  1. [XSLFO] Liste avec tableau
    Par henri93 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 11/07/2012, 09h21
  2. Liste d'initialisation avec tableau
    Par victor_gasgas dans le forum Langage
    Réponses: 8
    Dernier message: 13/06/2010, 19h04
  3. [AJAX] Lier une liste avec un tableau avec Ajax
    Par hakou08 dans le forum AJAX
    Réponses: 4
    Dernier message: 03/04/2009, 10h53
  4. Réponses: 1
    Dernier message: 18/02/2008, 12h55
  5. Tableau ou list avec images, texte, texte cliquable
    Par hinsano dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 26/01/2007, 15h53

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