[Python-de] Liste uniquify
Thomas 'PointedEars' Lahn
PointedEars at web.de
Sa Nov 19 21:36:57 CET 2011
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.
Mehr Informationen über die Mailingliste python-de