Ich habe zwei Arrays. Die Elemente, die in beiden Arrays vorkommen, sollen von einem entfernt werden.
Das habe ich so gelöst:
Code: Alles auswählen
x=[1,2,3]
y=[9,8,7,1]
for c in range(len(y)):
if y[c] in x:
del y[c]
Doch wenn ich es in mein Hauptprogramm einbinde, kommt die Meldung
if umgebung[c] in kombi:
IndexError: list index out of range
"umgebung" entspricht "y" und
"kombi" sieht wie "x" aus.
Das alles ist in mehreren ineinander geschachtelten Schleifen eingebaut, sodass ich nicht dahinter komme, wo der Fehler liegt.
Als isoliertes Programm funktioniert es ja...
Ich denke, dass dadruch, dass ein Element von y entfernt wird, die Schleife ja einmal zu lange durchläuft, da sie ja mit len(y) gestartet wurde und da y noch ein Element länger war.
Ich habe alles mögliche probiert, um den Fehler zu finden... Ich habe Ausgaben an allen möglichen Stellen eingebaut, um die jeweiligen Zwischenergebnisse zu überprüfen... Alles läuft nach Plan bis zu dieser Stelle...
Wenn ich
Code: Alles auswählen
x=[1,2,3]
y=[9,8,7,1]
for c in range(len(y)):
if y[c] in x:
1+1
#del y[c]
Hat jemand irgendwelche Ideen?
Vielleicht eine Alternative, wie man aus einem Array alle Elemente entfernen kann, die in einem anderen Array enthalten sind?
Vielleicht gibt es mit einer Alternativlösung kein Problem mit dem Überlauf...
Mir ist noch eine (wenn auch sehr unelegante) Möglichkeit eingefallen, wie ich das Probelm umgehen könnte.
Dazu fehlt mir aber ein Befehl.
a.remove(b) entfernt ja nur das erste b und nicht alle b.
Ich brauche aber einen Befehl, der alle b aus a entfernt.
Wie heißt der?
Gruß
Paul