Doppelte Elemente in einer Liste
Ted
- perl
Hi,
wie wir alle wissen, kann ich mit
undef %saw;
@out = grep(!$saw{$_}++, @in);
die doppelten Elemente einer Liste herausfiltern.
Wie kann ich mir aber diese doppelten Elemente anzeigen lassen, oder in eine @dopp schreiben lassen?
Grüß Euch
Ted
Hi,
wie wir alle wissen, kann ich mit
undef %saw;
@out = grep(!$saw{$_}++, @in);
die doppelten Elemente einer Liste herausfiltern.
Wie kann ich mir aber diese doppelten Elemente anzeigen lassen, oder in eine @dopp schreiben lassen?
Grüß Euch
Ted
Hi,
ich ahbe selber eine Lösung gefunden:
foreach $key (sort { $a <=> $b } keys %saw) {
if ($saw{$key} > 1) {
print "$key";
}
}
Trotzdem die frage, gibt es eine effizientere???
Ted
Moin!
Trotzdem die frage, gibt es eine effizientere???
Effizienter ist es wohl kaum, aber
@dopp = grep($saw{$_}>1, keys(%saw));
sollte auch ok sein. Man darf sich ueberlegen, ob man vor das keys noch ein sort schreiben will. Nachteil dabei ist, dass die tatsaechlichen Anzahlen der Mehrfachvorkommen nicht uebernommen werden, allerdings kann man die ja noch in %saw nachschauen (die Werte aus @dopp als Key verwenden).
So long
Moin!
Trotzdem die frage, gibt es eine effizientere???
Effizienter ist es wohl kaum, aber
@dopp = grep($saw{$_}>1, keys(%saw));
sollte auch ok sein. Man darf sich ueberlegen, ob man vor das keys noch ein sort schreiben will. Nachteil dabei ist, dass die tatsaechlichen Anzahlen der Mehrfachvorkommen nicht uebernommen werden, allerdings kann man die ja noch in %saw nachschauen (die Werte aus @dopp als Key verwenden).
So long
Jep, klar, hätte ich auch drauf kommen können :-) Aber Du hast Recht, es ist halt ne andere Lösung, aber interessehalber durchaus lesenswert.
Danke
Ted