Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Raimo •-->


Anmeldedatum: 20.08.2003 Beiträge: 111
|
Verfasst am: 15.09.2003 - 16:07 Titel: Mehrfacheinträge in einer Liste löschen |
|
|
ich habe eine liste z.B.
{1,2,3,1,7,5,3,2,1,4,5,1,4,2,5,9,5}
und jetzt möchte ich alle einträge die doppelt sind löschen
also, soll die list anschliessen nur noch
{1,2,3,7,5,4,9}
beinhalten.
wie mache ich das am besten?
ich habe schon eine lösung, aber die ist sehr langsam und nicht gerade effizient, wegen doppel-repeat und daher unnötig vielmal die liste durch gearbeitet wird. |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 15.09.2003 - 16:13 Titel: |
|
|
Eine einzige Schleife genügt.
Damit einfach alle Listeneinträge, die in einer neuen Liste noch nicht vorhanden sind, dort eintragen.
set meineListe to {1, 2, 3, 1, 7, 5, 3, 2, 1, 4, 5, 1, 4, 2, 5, 9, 5}
set neueListe to {}
repeat with i from 1 to (count of meineListe) in meineListe
set einEintrag to item i of meineListe
if einEintrag is not in neueListe then
set the end of neueListe to einEintrag
end if
end repeat
return neueListe _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
Raimo •-->


Anmeldedatum: 20.08.2003 Beiträge: 111
|
Verfasst am: 15.09.2003 - 16:18 Titel: |
|
|
ich trottel
set A to {"113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "12", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", "150", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "141", "141", "141", "141", "141", "141", "141", "141", "141", "141", "141", "149", "150"}
set B to {}
repeat with einA in A
if B does not contain einA then set B to B & einA
end repeat
ist das so auch richitg? oder? |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 15.09.2003 - 16:35 Titel: |
|
|
Raimo hat Folgendes geschrieben: | ist das so auch richitg? oder? |
Absolut!
Und jetzt setzen wir noch eins drauf und sortieren die Ergebnisliste:
set meineListe to {}
repeat 100 times
set the end of meineListe to (random number from 1 to 10000)
end repeat
set Scriptstart to current date
set neueListe to QuickSort(CreateNewList(meineListe))
set Scriptende to current date
set Laufzeit to Scriptende - Scriptstart
display dialog "Laufzeit des Scripts: " & Laufzeit & " Sekunden." buttons {"OK"} ¬
default button 1 giving up after 10
return neueListe
on CreateNewList(Liste)
set tempList to {}
repeat with i from 1 to (count of Liste) in Liste
set oneItem to item i of Liste
if oneItem is not in tempList then
set the end of tempList to oneItem
end if
end repeat
return tempList
end CreateNewList
on QuickSort(Liste)
set Laenge to count Liste
if Laenge < 2 then return Liste
set ListeKleiner to {}
set ListeGleich to {}
set ListeGroesser to {}
set Vergleich to item 1 of Liste
set Zaehler to 1
repeat while Zaehler <= Laenge
set Element to (item Zaehler of Liste)
if Element < Vergleich then
set end of ListeKleiner to Element
else if Element > Vergleich then
set end of ListeGroesser to Element
else
set end of ListeGleich to Element
end if
set Zaehler to Zaehler + 1
end repeat
return (QuickSort(ListeKleiner) & ListeGleich & QuickSort(ListeGroesser))
end QuickSort
 _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 15.09.2003 - 18:40, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Raimo •-->


Anmeldedatum: 20.08.2003 Beiträge: 111
|
Verfasst am: 15.09.2003 - 16:45 Titel: |
|
|
return (QuickSort(ListeKleiner) & ListeGleich & QuickSort(ListeGroesser))
rekursiv
, oder? |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 15.09.2003 - 16:56 Titel: |
|
|
Raimo hat Folgendes geschrieben: |
return (QuickSort(ListeKleiner) & ListeGleich & QuickSort(ListeGroesser))
rekursiv
, oder? |
Ja, muss ja auch so sein, damit die Teillisten solange sortiert werden bis wirklich alles in der richtigen Reihenfolge ist. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de
|