Keo: doppelte Werte aus einem @ ersetzen

Hallo zusammen,

kann mir vielleicht jemand sagen wie ich doppelte werte aus einem array entfernen kann?

MfG
Daniel

  1. 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

    1. hmmm....
      kann aich auch irgendwie die werte die doppelt vorkommen komplett rauslöschen? also das die überhaupt nicht mehr im array stehen

      1. 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

        1. 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 :-)

          1. 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);

            --
              Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
            1. Na das ist ein Service... ich dachte dir Matti. Hast du nicht vielleicht Bock, alle meine Programme zu kommentieren :-)

  2. Halihallo Keo

    kann mir vielleicht jemand sagen wie ich doppelte werte aus einem array entfernen kann?

    RTFM: http://www.perldoc.com/perl5.6/pod/perlfaq4.html#How-can-I-remove-duplicate-elements-from-a-list-or-array-

    Viele Grüsse

    Philipp

    --
    RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
    Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.