Entfernen Sie Duplikate aus Array-Perl

November 2

Perl und vielen anderen Programmiersprachen verwenden Arrays, um eine Liste mit Daten zu speichern. Perl unterstützt jedoch auch eine bestimmte Datenstruktur namens einen Hash. Ein Perl-Hash ordnet einen bestimmten Wert eines Schlüssels. Ein Beispiel ist der Hash {Jan = > 31, Apr = > 30}, in dem ein Monat ist ein Schlüssel und eine Anzahl von Tagen ist ein Wert. Ein Perl-Hash ermöglicht einen einfachen Algorithmus, um Duplikate aus einem Array zu entfernen zu entwickeln. Die entsprechende Subroutine enthält weniger als zehn Befehle in Perl.

Anweisungen

Erstellen eine Unterroutine "Remove_duplicates;" ein Algorithmus

1 Rufen Sie Arraydaten ab und deklarieren Sie einen Hash "Eintrag." Ein weiteres Array mit dem Namen "New_array" wird nicht doppelten Daten enthalten. Schritte 1 bis 5 werden mit dem Perl-Code, der in Abschnitt 2, Schritt 3 angegebenen illustriert.

2 Weisen Sie alle Array-Elemente wie die Hashschlüssel und weisen Sie gleich 1 für alle Schlüssel Hash-Werte.

3 Alle Elemente des Arrays durchlaufen Sie und überprüfen Sie den Hash-Wert, die diesem Element zugeordnet.

4 Wenn der Hashwert 1 ist (siehe Schritt 3) dann das Element ist original oder nicht duplizierten und sollte hinzugefügt werden, um "New_array." Gleichzeitig ist dieses Element gekennzeichnet; d.h. ändert der Hash-Wert auf 0.

5 Wenn der Hash-Wert 0 ist, hat dieses Element bereits festgestellt; d.h. ist es doppelt vorhanden und übersprungen.

Beispiel und Perl Programm

6 Entfernen Sie Duplikate aus dem Array mit Elementen (1 2 6 7 2 9 1 2 6).

7 Drucken Sie Anfangs- und Endwert Arrays (ohne Duplikate).

8 Abschnitt 1Subroutine beginnt Sub Remove_duplicates {}meine ($array, $newArray) = bei; #Step 1. Ursprüngliche Array lesenmeine entries=() %; #Step 1. Deklarieren Sie den hash

Foreach (@$array) {}nächsten If existiert $entries {$};

$entries {$} = 1; #Step 2}

Foreach (@$array) {#Step 3. Schleife durch alle Elemente des Arraysif($Entries{$_}) {#Step 5. Das Element wird übersprungen, wenn der Hash-Wert 0 ist.Push @$newArray, $; #Step 4. Fügen Sie ein Element in das neue Array, nur wenn der Hash-Wert 1 ist

$entries {$_} = 0; #Step 4. Das Element markiert ist, d. h. den Hash-Wert auf 0 ändern.}

}}

Unterprogramm EndsSection 2 Mein $array = [Qw (1 2 6 7 2 9 1 2 6)]; #Step1: ein Beispiel-Array

meine $new_array = []; #

Remove_duplicates ($array, $new_array);Drucken Sie "@$array \n"; #Step 2. Druck erste arrayDrucken Sie "@$new_array \n"; # Drucken endgültig arrayAusfahrt;

Tipps & Warnungen

  • Unterprogramm "Remove_duplicates" können problemlos in jedem Perl-Programm eingebunden werden.