alle gleichen elemente aus liste löschen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Gast

alle gleichen elemente aus liste löschen

Beitragvon Gast » Samstag 22. Januar 2005, 15:51

Hallo,
ich habe ein wirklich triviales Problemchen.

Ich habe eine Liste und will eine Elemente das mehrmals vorkommt löschen.

Die Funktion remove löscht aber nur immer das erste Element und eine for-Schleife über alle Elemente laufen zu lassen udn immer remove aufzurufen finde ich ist höchst ineffizient.
Gibt es keinen anderen Weg???

Danke
XT@ngel
User
Beiträge: 256
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Beitragvon XT@ngel » Samstag 22. Januar 2005, 16:07

Meinst du sowas hier:
http://python.sandtner.org/viewtopic.php?t=93

MfG
Andreas
Gast

Beitragvon Gast » Samstag 22. Januar 2005, 16:20

super andreas,
vielen Dank!!!

Wie immer exzellent super schnelle und effiziente Hilfe in diesem Forum!!!

Danke
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Samstag 22. Januar 2005, 16:35

Ich glaube ich hab noch einen Tipp für's nächste mal: hier. Der funktioniert manchmal noch schneller :wink: :lol:
Gast

Beitragvon Gast » Samstag 22. Januar 2005, 16:36

ah,
hi nochmal ich,
leider doch nicht soooo ganz das was ich suche.

Wenn ich ne Liste habe
list = ["A","H","A","T","B","A"]

will ich nur alle A's löschen und die Sortierung soll erhalten bleiben also sollte rauskommen:
redlist = ["H","T","B"]

vielleicht kann mir einer helfen?

Dangöö
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Samstag 22. Januar 2005, 17:27

Hi. Dann musst du eben zuerst feststellen, ob ein Element mehrfach auftaucht und es dann löschen. Das kann man machen, während man die Liste durchgeht und falls man ein doppetes findet es wieder rausnehmen:

Code: Alles auswählen

def f(iterable):
    erg=[]
    mehrfach=[]
    for el in iterable:
        if el in mehrfach:
            continue
        elif el in erg:
            erg.remove(el)
            mehrfach.append(el)
            continue
        else:
            erg.append(el)
    return erg

Damit führe ich eine schwarze Liste, ob ein Element mehrfach vorkommt und gehe dementsprechd vor, wenn ich alle neuen Elemente zusammenstelle.
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Samstag 22. Januar 2005, 19:36

Hi,

Code: Alles auswählen

def remove_all(l, x):
    while x in l:
        l.remove(x)


oder falls die alte Liste erhalten bleiben soll:

Code: Alles auswählen

l = ["A","H","A","T","B","A"]
redlist = [for x in l if x != "A"]



Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Gast

Beitragvon Gast » Samstag 22. Januar 2005, 19:51

peinlich,
darauf hätte man auch von selbst kommen können....

Trotzdem vielen DANK!

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]