Mike Müller wrote:
Die Lösung mit einem Set ist aber wesentlich performanter und meiner Meinung nach auch leichter zu verstehen. In Python sind die eleganten Lösungen auch bei der Performance oft (nicht immer) die besseren. Ich denke die Set-Lösung ist der bevorzugte Weg in Python für dieses Problem.
Sehe ich auch so. Weshalb aber reproduzierbar $ python Python 2.6.7 (r267:88850, Jul 10 2011, 09:55:27) [GCC 4.6.1] on linux2 Type "help", "copyright", "credits" or "license" for more information.
list(set(["a", "a", "b", "e", "c", "g", "d", "g"])) ['a', 'c', 'b', 'e', 'd', 'g']
und _nicht_ wie vom OP gewünscht (und erwartet) ['a', 'b', 'e', 'c', 'g', 'd']? Auch mit li = ["a", "a", "b", "e", "c", "g", "d", "g"] s = set() for item in li: s.add(item) print s print list(s) erhalte ich reproduzierbar das erste Ergebnis, obwohl über die Liste wie erwartet vom Anfang zum Ende (v. l. n. r.) iteriert wird. Ein Set wird in der Dokumentation als eine ungeordnete Sammlung von einzigartigen Elementen ("an unordered collection of unique elements") definiert, bloss liegt dieser anscheinend doch ein Ordnungsprinzip zugrunde. Welches? -- PointedEars Please do not Cc: me. / Bitte keine Kopien per E-Mail.