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.
Antworten
Gast

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: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

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

MfG
Andreas
Gast

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

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

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

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.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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]#!/usr/bin/env python
import this[/code]
Gast

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

Trotzdem vielen DANK!
Antworten