/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Filtrere i et array
Fra : Lars Kim Lund


Dato : 14-08-02 16:56


Er der en smart måde jeg kan filtrere et array med et andet? Dvs. hvis
et element i array A er indeholdt i array B så skal det slettes fra A.

Jeg kan godt lave noget grim kode hvor jeg looper igennem array B for
hvert element i A, men jeg tænkte om der var en anden måde.

--
Lars Kim Lund
http://www.net-faq.dk/

 
 
Lars Balker Rasmusse~ (14-08-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 14-08-02 17:02

Lars Kim Lund <lkl@fabel.dk> writes:
> Er der en smart måde jeg kan filtrere et array med et andet? Dvs. hvis
> et element i array A er indeholdt i array B så skal det slettes fra A.
>
> Jeg kan godt lave noget grim kode hvor jeg looper igennem array B for
> hvert element i A, men jeg tænkte om der var en anden måde.

Brug en hash.

@A = (1,2,3);
@B = (2);

%B = map { $_ => 1 } @B;
@AudenB = grep { !$B{$_} } @A;

print @A;
--
Lars Balker Rasmussen                  "S.M.R.T."

Lars Kim Lund (14-08-2002)
Kommentar
Fra : Lars Kim Lund


Dato : 14-08-02 17:51

Lars Balker Rasmussen <lars@balker.org> wrote:

>> Jeg kan godt lave noget grim kode hvor jeg looper igennem array B for
>> hvert element i A, men jeg tænkte om der var en anden måde.
>
>Brug en hash.
>
>@A = (1,2,3);
>@B = (2);
>
>%B = map { $_ => 1 } @B;
>@AudenB = grep { !$B{$_} } @A;
>
>print @A;

Du mente sikkert print @AudenB. Det virker fint, tak. Den ligner den
dupe-check metode jeg tror du har vist mig tidligere, så jeg burde
have gennemskuet den.

Mange tak.

--
Lars Kim Lund
http://www.net-faq.dk/

Peter Makholm (14-08-2002)
Kommentar
Fra : Peter Makholm


Dato : 14-08-02 18:02

Lars Balker Rasmussen <lars@balker.org> writes:

> @AudenB = grep { !$B{$_} } @A;

@AudenB = grep { ! exists $B{$_} } @A;

Hvis @B også kan indeholde værdier perl fortolker som falsk.

--
Peter Makholm | We constantly have to keep in mind why natural
peter@makholm.net | languages are good at what they're good at. And to
http://hacking.dk | never forget that Perl is a human language first,
| and a computer language second

Lars Balker Rasmusse~ (14-08-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 14-08-02 18:04

Peter Makholm <peter@makholm.net> writes:
> Lars Balker Rasmussen <lars@balker.org> writes:
> > @AudenB = grep { !$B{$_} } @A;
>
> @AudenB = grep { ! exists $B{$_} } @A;
>
> Hvis @B også kan indeholde værdier perl fortolker som falsk.

Nej, $B{noget} er enten undef eller 1.

> > %B = map { $_ => 1 } @B;
--
Lars Balker Rasmussen                  "S.M.R.T."

Peter Makholm (14-08-2002)
Kommentar
Fra : Peter Makholm


Dato : 14-08-02 18:19

Lars Balker Rasmussen <lars@balker.org> writes:

> Nej, $B{noget} er enten undef eller 1.

Du troedede da ikke at jeg læste det indlæg jeg svarede på.

--
Peter Makholm | Emacs is the only modern general-purpose
peter@makholm.net | operating system that doesn't multitask
http://hacking.dk |

Lars Balker Rasmusse~ (14-08-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 14-08-02 18:28

Peter Makholm <peter@makholm.net> writes:
> Lars Balker Rasmussen <lars@balker.org> writes:
> > Nej, $B{noget} er enten undef eller 1.
>
> Du troedede da ikke at jeg læste det indlæg jeg svarede på.

Grøn.
--
Lars Balker Rasmussen                  "S.M.R.T."

Dennis Haney (02-09-2002)
Kommentar
Fra : Dennis Haney


Dato : 02-09-02 08:21

Lars Kim Lund <lkl@fabel.dk> writes:

> Er der en smart måde jeg kan filtrere et array med et andet? Dvs. hvis
> et element i array A er indeholdt i array B så skal det slettes fra A.
>
> Jeg kan godt lave noget grim kode hvor jeg looper igennem array B for
> hvert element i A, men jeg tænkte om der var en anden måde.

man perlfaq4

kig under "How do I compute the difference of two arrays? How do I compute the intersection of two arrays?"

--
Dennis
I have always thought explanations were overkill when correcting
mistakes. A simple "that's wrong" must suffice. I mean, people are
always aware why they are wrong. They just make mistakes to annoy you.

Dennis Haney (02-09-2002)
Kommentar
Fra : Dennis Haney


Dato : 02-09-02 08:40

> Dennis Haney <davh@diku.dk> writes:
>
> > Lars Kim Lund <lkl@fabel.dk> writes:
> >
> > > Er der en smart måde jeg kan filtrere et array med et andet? Dvs. hvis
> > > et element i array A er indeholdt i array B så skal det slettes fra A.
> > >
> > > Jeg kan godt lave noget grim kode hvor jeg looper igennem array B for
> > > hvert element i A, men jeg tænkte om der var en anden måde.
> >
> > man perlfaq4
> >
> > kig under "How do I compute the difference of two arrays? How do I compute the intersection of two arrays?"
>

Lars Balker Rasmussen <lars@balker.org> writes:
>
> Det er ikke noget godt svar, for det er jo ikke en af de to ting Lars vil.

B-A? Det er det jeg ville kalde en difference af to arrays... Desværre
har du alligevel ret, da faq'en kun omtaler symmetrisk difference.

Ps.
Send venligst dine svar til nyhedsgruppen og ikke til min personlige post!

--
Dennis
I have always thought explanations were overkill when correcting
mistakes. A simple "that's wrong" must suffice. I mean, people are
always aware why they are wrong. They just make mistakes to annoy you.

Lars Balker Rasmusse~ (02-09-2002)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 02-09-02 09:41

Dennis Haney <davh@diku.dk> writes:
> Ps.
> Send venligst dine svar til nyhedsgruppen og ikke til min personlige post!

Hov, det var en smutter.
--
Lars Balker Rasmussen                  "S.M.R.T."

Søg
Reklame
Statistik
Spørgsmål : 177435
Tips : 31962
Nyheder : 719565
Indlæg : 6408016
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste