Mutation

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)