Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: More efficient way to get uniq list elements from list of lists

by Aighearach (Initiate)
on Nov 11, 2004 at 03:55 UTC ( [id://406905]=note: print w/replies, xml ) Need Help??


in reply to More efficient way to get uniq list elements from list of lists

In the first place you could have replaced push @vertices with $unique{ $edges[$i][$j] } = undef and then you don't have to mess with shoehorning @uniqv into a hash just to pull out the keys.

Abstracting out the edges and vertices, what I see is going on is, you have a list of lists, and you just want the elements that are unique across the whole thing.

I would do something like:

sub unique_elements { my ( %unique ); # @_ could be large, so I don't want to put the list in memory, or + even put a list of indices into mem like you do with 0 .. $#_ for ( my $i = 0; $i < @_; $i++ ) { # but the inner lists are a small fixed size, so even though t +he sollution is generalized, the inner values I do just stick in a li +st, which I use for a hash slice to autovivify the keys @unique{@{$_[$i]}} = undef; # black magic warning! the first e +lement in the slice is assigned undef, and the rest are autovivfied } return sort keys %unique; }

--
Snazzy tagline here

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (4)
As of 2024-03-29 11:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found