Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Mehrfacheinträge in einer Liste löschen

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Raimo
•-->
•-->


Anmeldedatum: 20.08.2003
Beiträge: 111

BeitragVerfasst am: 15.09.2003 - 16:07    Titel: Mehrfacheinträge in einer Liste löschen Antworten mit Zitat

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.


Question 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 15.09.2003 - 16:13    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Raimo
•-->
•-->


Anmeldedatum: 20.08.2003
Beiträge: 111

BeitragVerfasst am: 15.09.2003 - 16:18    Titel: Antworten mit Zitat

ich trottel Embarassed

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 15.09.2003 - 16:35    Titel: Antworten mit Zitat

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


Wink
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com


Zuletzt bearbeitet von Snow am 15.09.2003 - 18:40, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Raimo
•-->
•-->


Anmeldedatum: 20.08.2003
Beiträge: 111

BeitragVerfasst am: 15.09.2003 - 16:45    Titel: Antworten mit Zitat

Shocked
  return (QuickSort(ListeKleiner) & ListeGleich & QuickSort(ListeGroesser))

rekursiv Neutral
, oder?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 15.09.2003 - 16:56    Titel: Antworten mit Zitat

Raimo hat Folgendes geschrieben:
Shocked
return (QuickSort(ListeKleiner) & ListeGleich & QuickSort(ListeGroesser))

rekursiv Neutral
, 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
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


AppleScript für absolute Starter