doppelte Werte aus einem @ ersetzen
Keo
- perl
0 Meise20000 Keo0 Meise200000 Keo
0 Philipp Hasenfratz
Hallo zusammen,
kann mir vielleicht jemand sagen wie ich doppelte werte aus einem array entfernen kann?
MfG
Daniel
Nicht sehr elegant, aber das funktioniert:
my %hash;
foreach (@doppelt) { $hash{$_} = 1; }
@doppelt = keys(%hash);
Hallo zusammen,
kann mir vielleicht jemand sagen wie ich doppelte werte aus einem array entfernen kann?
MfG
Daniel
hmmm....
kann aich auch irgendwie die werte die doppelt vorkommen komplett rauslöschen? also das die überhaupt nicht mehr im array stehen
Versuch mal:
my %hash;
foreach (@doppelt) { $hash{$_}++; }
undef @doppelt;
foreach (keys(%hash)) { push(@doppelt,$_) if ($hash{$_} == 1); }
hmmm....
kann aich auch irgendwie die werte die doppelt vorkommen komplett rauslöschen? also das die überhaupt nicht mehr im array stehen
Versuch mal:
my %hash;
foreach (@doppelt) { $hash{$_}++; }
undef @doppelt;
foreach (keys(%hash)) { push(@doppelt,$_) if ($hash{$_} == 1); }hmmm....
kann aich auch irgendwie die werte die doppelt vorkommen komplett rauslöschen? also das die überhaupt nicht mehr im array stehen
Ich danke dir für deine Mithilfe, leider hab ich das Problem das ich nicht der beste Progger bin, kannst du mir kleine Kommentare dazuschreiben, den mit copy/paste lerne ich nicht viel :-)
use Mosche;
Ich danke dir für deine Mithilfe, leider hab ich das Problem das ich nicht der beste Progger bin, kannst du mir kleine Kommentare dazuschreiben, den mit copy/paste lerne ich nicht viel :-)
Probier es nächstes mal erst, selbst herauszubekommen, ...
my %hash;
Er deklariert einen Hash. Ein Hash ist ein assoziativer Array (jeder Schlüssel ist unique).
foreach (@doppelt) { $hash{$_}++; }
Mit einer Schleife nimmt er sich jedes Element deines Arrays vor (den er hier @doppelt genannt hat). Jedes Element fügt er in den Hash ein und erhöht den zugehörigen Wert um eins. Wenn in deinem Array ein Element nur einmal vorhanden ist, dann ist der zugehörige Wert in deinem Hash 1.
undef @doppelt;
Er leert den Array.
foreach (keys(%hash)) { push(@doppelt,$_) if ($hash{$_} == 1); }
Jetzt durchläuft er wieder den Hash. Für jeden Key des Hashes fügt er den Key in deinen Array @doppelt ein, solange das entsprechende Element nur einmal vorhanden ist (s.o.).
use Tschoe qw(Matti);
Na das ist ein Service... ich dachte dir Matti. Hast du nicht vielleicht Bock, alle meine Programme zu kommentieren :-)
Halihallo Keo
kann mir vielleicht jemand sagen wie ich doppelte werte aus einem array entfernen kann?
Viele Grüsse
Philipp