Bei Listen haben wir auch schon gesehen, dass wir den internen Zustand ändern können. Zum Beispiel haben wir factorials[i] = i * factorials[i-1]
geschrieben, um in einer Wiederholung mit der Zählvariablen i
eine Liste von Fakultäten zu erzeugen. Solche sogenannten Mutationen von Objekten können auch in Prozeduren abstrahiert werden. Ein typisches Beispiel ist die Prozedur swap
, die zwei Elemente in einer Liste vertauscht:
def swap(a,i,j):
x = a[i]
a[i] = a[j]
a[j] = x
Der Rumpf der Prozedur swap
enthält zwei Mutationen der in dem Parameter a
gespeicherten Liste.
Wir können unter Verwendung von swap
kompliziertere mutierende Prozeduren definieren; zum Beispiel eine, die die Reihenfolge der Elemente einer Liste umkehrt:
def reverse(a):
for i in range(0,len(a)//2):
swap(a, i, len(a)-i-1)