Sortierte Sätze Python 2.7

Ich habe eine Liste, die ich bin versucht zu entfernen doppelter Elemente aus. Ich bin mit python 2.7.1, so kann ich einfach die set() Funktion. Aber das verschiebt meiner Liste. Die für meinen konkreten Fall nicht hinnehmbar ist.

Unten ist eine Funktion, die ich geschrieben habe; der tut dies. Allerdings Frage ich mich, ob es einen besseren/schnelleren Weg. Auch jegliche Kommentare dazu wären sehr willkommen.

    def ordered_set(list_):

        newlist = []
        lastitem = None
        for item in list_:

            if item != lastitem:
                newlist.append(item)
                lastitem = item

        return newlist

Die obige Funktion setzt Voraus, dass keines der Elemente wird Keine, und dass die Elemente in order (ie, ['a', 'a', 'a', 'b', 'b', 'c', 'd'])

Obige Funktion gibt ['a', 'a', 'a', 'b', 'b', 'c', 'd'] als ['a', 'b', 'c', 'd'].

Es ist eine andere ähnliche Frage gibt einen link zu einer Umsetzung, stackoverflow.com/questions/1653970/...
Wäre es besser, die Liste automatisch sortiert und dublettenfrei? Oder ist es in Ordnung, um in regelmäßigen Abständen Spülen Sie die Liste der Duplikate?
Sie Beispiel-code bedeutet, dass _list ist eine Sequenz, die nur zusammenhängend Duplikate. Ist es das, was du meinst? Es funktioniert nicht für Eingaben wie diese [1, 2, -4, -4, 1]: 1 werden noch dupliziert werden, während -4 werden de-dupliziert.

InformationsquelleAutor rectangletangle | 2011-06-01

Schreibe einen Kommentar