recuperer une liste

recuperer une liste - Perl - Programmation

Marsh Posté le 25-09-2007 à 10:19:13    

Bonjour ,  
j ai deux listes
@arrive=(16,17,18,19);
@trouve=(16,19);
ce que je cherche c est de faire la comparaison entre les deux listes et avoir une troisieme liste qui contient que 17et 18.
si vous pouvez m aider .
la programmation est en perl .
merci

Reply

Marsh Posté le 25-09-2007 à 10:19:13   

Reply

Marsh Posté le 25-09-2007 à 12:45:06    

En utilisant un hash :

#!/usr/bin/perl -w
 
use strict;
 
my @arrive=(16,17,18,19);
my @trouve=(16,19);
 
my %h;
map { $h{$_} = 1 } @trouve;
my @diff = grep { !$h{$_} } @arrive;
 
print join(', ', @diff);

Reply

Marsh Posté le 25-09-2007 à 13:27:29    

en lisant la doc :o
http://perldoc.perl.org/perlfaq4.h [...] -arrays%3f
 
en utilisant la CPAN pour trouver le module qui va bien:
http://search.cpan.org/~typester/A [...] ay/Diff.pm

Reply

Marsh Posté le 25-09-2007 à 14:55:52    

merci beaucoup pour votre aide

Reply

Marsh Posté le 26-09-2007 à 13:34:46    

pour matafan :
est ce que je peux avoir svp une explication de ça :
map { $h{$_} = 1 } @trouve;  
my @diff = grep { !$h{$_} } @arrive;  
 

Reply

Marsh Posté le 26-09-2007 à 14:51:05    

lotffa a écrit :

pour matafan :
est ce que je peux avoir svp une explication de ça :
map { $h{$_} = 1 } @trouve;  
my @diff = grep { !$h{$_} } @arrive;  

map évalue une expression pour tous les éléments d'une liste : http://perldoc.perl.org/functions/map.html. Ici, on ajoute dans la hashmap une clé pour chaque élément de la liste, et on associe 1 à cette clé.
 
grep extrait d'une liste les éléments qui v&rifient une certaine condition : http://perldoc.perl.org/functions/grep.html. Ici, on ne veut récupérer que les éléments qui ne sont pas des clés de la hashmap, i.e. qui n'étaient pas dans la première liste.


---------------
TriScale innov
Reply

Marsh Posté le 26-09-2007 à 15:36:27    

merci franceso j ai mieux compris

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed