Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Extracting Unique Characters from a Array

by mreece (Friar)
on Sep 07, 2006 at 17:41 UTC ( #571757=note: print w/ replies, xml ) Need Help??


in reply to Extracting Unique Characters from a Array

array elements are not unique, but hash keys are, so a common approach is to use the uniqueness of hash keys to resolve your array.

if you want to preserve the original order, you can do this:

my @nums = qw(2 1 3 5 4 5 4 3 2 1); # order is not important my @unique; # new list of unique elements my %seen; # numbers i have seen so far foreach my $x ( @nums ) { # check each number if ( ! $seen{$x} ) { # skip if we already saw this one $seen{$x} = 1; # note we have seen this one now push @unique, $x; # and store to new list } } ## TODO: do something with @unique
if you want to sort the resulting list, you can do this:
my @nums = qw(2 1 3 5 4 5 4 3 2 1); # order is not important my %seen = map { $_ => 1 } @nums; # build a hash; keys will be unique! @nums = sort keys %seen; # replace old list with new sorted list ## TODO: do something with @nums
another approach, as rsriram demonstrated above, is to sort first, then loop and look for repeating values:
my @nums = qw(2 1 3 5 4 5 4 3 2 1); @nums = sort @nums; my @unique; my $previous; foreach my $current ( @nums ) { # check each number next if $current eq $previous; # duplicate! push @unique, $current; # store to new list $previous = $current; # 'current' becomes 'previous' } ## TODO: do something with @unique
(updated to fix some silly issues with untested code)


Comment on Re: Extracting Unique Characters from a Array
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://571757]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (6)
As of 2015-07-06 02:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (69 votes), past polls