Hier ist mein Ansatz:
Code: Alles auswählen
>>> def replace(liste, old, new):
return (str(liste).replace(str(old), str(new))).split('[')[1].split(']')[0].split(', ')
>>> replace(range(10), 4, 0)
['0', '1', '2', '3', '0', '5', '6', '7', '8', '9']
Code: Alles auswählen
>>> def replace(liste, old, new):
return (str(liste).replace(str(old), str(new))).split('[')[1].split(']')[0].split(', ')
>>> replace(range(10), 4, 0)
['0', '1', '2', '3', '0', '5', '6', '7', '8', '9']
Nichts fuer ungut, Dein Beispiel ist aber am Ende nicht mehr als Spielerei. Dein Code ist uneffizient und unflexibel. Wuerde niemand so machen.Pascal hat geschrieben:Es gibt auch die Möglichkeit das ganze mit der replace-Methode für strings zu lösen.
Code: Alles auswählen
replace(["[", "1,2", "]", 4, 5], 4, 42)
Code: Alles auswählen
replace([{1:2, 3:4, 5:6}], 4, 42)
Ich wollt ja lediglich einen anderen Lösungsvorschlag präsentieren.hendrikS hat geschrieben:Nichts fuer ungut, Dein Beispiel ist aber am Ende nicht mehr als Spielerei. Dein Code ist uneffizient und unflexibel. Wuerde niemand so machen.Pascal hat geschrieben:Es gibt auch die Möglichkeit das ganze mit der replace-Methode für strings zu lösen.
Code: Alles auswählen
>>> my_set = set()
>>> class A(object):
... def __init__(self, name):
... self.name = name
... def __str__(self):
... return "Name: %s" % self.name
... __repr__ = __str__ # Don't do this at home
... def __hash__(self):
... return 1
... def __eq__(self, other):
... return True
... def __neq__(self, other):
... return not self == other
...
>>> my_set.add(A("First"))
>>> print my_set
set([Name: First])
>>> my_set.add(A("Second"))
>>> print my_set
set([Name: First])
>>> my_set.pop()
Name: First
>>> my_set
set([])
>>> my_set.add(A("Second"))
>>> my_set
set([Name: Second])
>>> my_set.discard(A("Third"))
>>> my_set
set([])
>>> my_set.add(A("Fourth"))
>>> my_set
set([Name: Fourth])
Wenn ich mich richtig erinnere hat Trundle ein Stückchen Code geschrieben, dass auch das mittels ctypes hinbekommt. Ist natürlich ein fieser Hack, aber trotzdem irgendwie cool.str1442 hat geschrieben:@cofi: Man kann Methoden zu jeder Klasse hinzufügen, die keine Builtin Klasse ist. list.replace = replace funktioniert also nicht.