list remove
Verfasst: Mittwoch 6. Dezember 2006, 00:58
Hi,
ich stehe vor einem kleinen Mysterium... Aus einer Listr, die Objekte enthält, möchte ich einzelne Einträge löschen, sofern vorhanden. Wenn die Liste strings enthält ist das auch kein Problem, aber so wie ich sie mit eigenen Objekten fülle, passieren seltsame Dinge...
Hier der Code:
Das Ergebnis auf der Konsole sieht dann so aus:
Scheinbar löscht remove() immer nur das erste Element und nicht das übergebene. Wenn ich __cmp__ nicht überlade, dann wird gar nichts gelöscht und schon beim ersten versuch wird eine Exception geworfen (was mir auch klar ist, da es sich um Objektreferenzen handelt, die ungleich sind).
Weiß jemand wie sich das gewünschte Objekt aus der Liste löschen lässt?
lg lunas
ich stehe vor einem kleinen Mysterium... Aus einer Listr, die Objekte enthält, möchte ich einzelne Einträge löschen, sofern vorhanden. Wenn die Liste strings enthält ist das auch kein Problem, aber so wie ich sie mit eigenen Objekten fülle, passieren seltsame Dinge...
Hier der Code:
Code: Alles auswählen
class M:
def __init__( self, num ):
self.num = num
# irgend eine string repraesentation
def __str__( self ):
if self.num == 1:
return '1'
elif self.num == 2:
return '2'
elif self.num == 3:
return '3'
def __cmp__( self, other ):
return str( self ) == str( other )
orig = [M(1),M(2),M(3)]
for o in orig:
print 'lst ', o
print '\n'
orig.remove( M(3) )
for o in orig:
print 'lst ', o
print '\n'
orig.remove( M(1) )
for o in orig:
print 'lst ', o
print '\n'
orig.remove( M(2) )
for o in orig:
print 'lst ', o
print '\n'
orig.remove( M(0) )
for o in orig:
print 'lst ', o
print '\n'
Code: Alles auswählen
lst 1
lst 2
lst 3
lst 2
lst 3
lst 3
Traceback (most recent call last):
File "main.py", line 216, in <module>
orig.remove( M(0) )
ValueError: list.remove(x): x not in list
Weiß jemand wie sich das gewünschte Objekt aus der Liste löschen lässt?
lg lunas