Hallo Python Freunde
Ich habe eine Frage zur Manipulation von Listen.
Hier folgt eine Versuchsliste:
liste = [a,b,c,d,e,f]
In dieser Liste möchte ich Elemente untereinander tauschen.
Zum Beispiel möchte ich bei der obigen Liste Element a mit f
tauschen. Die resultierende Liste würde wie folgt aussehen:
resliste = [f,b,c,d,e,a]
Gibt es in Python eine Methode die es ermöglicht Elemente
direkt mit Hilfe einer Indexangabe zu tauschen (swappen).
Meine Vorstellung für den obigen Fall wäre:
liste.swap(0,5)
Besten Dank für Eure Hilfe
Gruss wuf
Swap-Methode für Listenelemente
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi wuf,
swappen geht in Python so:
Du kannst aber (ab Python2.2) auch eine eigene Klasse von list ableiten, und um eine swap-Methode erweitern.
Das return self am Ende brauchts zwar nicht, ich mache es aber auch bei inplace-operationen, weil dann auch das Ergebnis der Methode verwendet werden kann und ja nur eine Referenz auf das Objekt zurückgegeben wird.
Gruß
Dookie
swappen geht in Python so:
Code: Alles auswählen
liste[0], liste[5] = liste[5], liste[0]
Code: Alles auswählen
class swap_list(list):
def swap(self,a,b):
self[a], self[b] = self[b], self[a]
return self
Gruß
Dookie
Zuletzt geändert von Dookie am Montag 22. März 2004, 17:21, insgesamt 1-mal geändert.
Hi Dookie
Besten Dank für Deine lehrreichen Vorschläge. Habe sie ausprobiert.
Funktionieren bestens! Konstruierte anhand Deinem ersten Vorschlag
folgende Methode:
Test der Methode:
Dein zweiter Vorschlag habe ich wie folgt ausprobiert:
Wie ist die Anwendung Deines zweiten Vorschlages, wenn mehrere
Listen manipuliert werden müssen. Beim folgenden Beispiel mit
zwei Listen:
Meine Lösung:
Gruss wuf
Besten Dank für Deine lehrreichen Vorschläge. Habe sie ausprobiert.
Funktionieren bestens! Konstruierte anhand Deinem ersten Vorschlag
folgende Methode:
Code: Alles auswählen
def swap(list,src,dest):
list[dest],list[src] = list[src],list[dest]
return list
Code: Alles auswählen
mylist = ['a','b','c','d','e','f']
print swap(mylist,0,5)
Code: Alles auswählen
list = swap_list(mylist)
print list.swap(0,5)
Listen manipuliert werden müssen. Beim folgenden Beispiel mit
zwei Listen:
Code: Alles auswählen
mylist1 = ['a','b','c','d','e','f']
mylist2 = ['g','h','i','j','k','l']
Code: Alles auswählen
list = swap_list(mylist1)
print list.swap(0,5)
list = swap_list(mylist2)
print list.swap(0,5)
Take it easy Mates!
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi wuf,
Merke: benenne eine Variable nie wie eine eingebaute Funktion oder Klasse!
Ich würde die zwei Listen gleich als instanzen von swap_list erzeugen.
Du siehst, Instanzen der neuen Klasse kannst Du wie herkömmliche Listen verwenden und hast auch alle Methoden die für Listen definiert sind. Das ist OOP
Gruß
Dookie
Merke: benenne eine Variable nie wie eine eingebaute Funktion oder Klasse!
Ich würde die zwei Listen gleich als instanzen von swap_list erzeugen.
Code: Alles auswählen
mylist1 = swap_list(('a','b','c','d','e','f'))
mylist2 = swap_list(['g','h','i','j','k','l'])
print mylist1.swap(0,5)
print mylist2.swap(0,5)
for a, b in zip(mylist1,mylist2):
print a, b
mylist3 = swap_list("mnopqr")
mylist3.reverse()
print mylist3
Gruß
Dookie