Aufgaben

Aufgabe: Objekte und Referenzen visualisieren

Visualisieren Sie die beim Ablauf der folgenden Programme erzeugten Objekte und Referenzen mit Kästen und Pfeilen und geben Sie jeweils die Ausgabe des Programms an.

Hinweis: Die vordefinierte Methode reverse mutiert Listen genau so wie die von uns definierte gleichnamige Prozedur.

# 1. Programm
def test(a,b):
  a.reverse()
  print(a)
  print(b)
  print(a == b)
  return a is b

x = [1,2,3]
print(test(x,x))
print(test(x,[1,2,3]))

# 2. Programm
nums = [1,2,3]
lists = [nums,[1,2,3]]
nums = [4,5,6]
lists[1] = lists[0]
nums = lists[1]
nums[0:3] = [7,8,9]
print(lists[0][0])

Aufgabe: Methoden zur Mutation von Listen

# Testing List methods
>>> li = [42,17,18,39,12,4,42]
>>> li.reverse()
>>> li

Untersuchen Sie im Python-Interpreter ebenso die List-Methoden append(a), clear(), copy(), count(a), extend(a), index(a), insert(n, a), pop(n), remove(a), sort(). Spezifizieren Sie ggf. die Parameter. Geben Sie die Methoden an,

  • die die Liste nicht mutieren,
  • die einen Wert zurückliefern

Versuchen Sie zunächst, experimentell Effekte und Rückgabewerte der Methoden zu ermitteln, bevor sie Quellen zurate ziehen.

Aufgabe: Objektidentitäten und Mutationen analysieren

Analysieren Sie mithilfe des Python-Interpreters die folgenden Anweisungen:

>>> list1 = [42,17,18,39,12,4,42]
>>> list2 = list1                    
>>> list3 = list(list1)
>>> list4 = list1+[]             
>>> list5 = list1.copy()
>>> list2.sort()
>>> list6 = sorted(list3)  

Geben Sie an, welche Listen

  • identisch sind (Objektidentität)
  • gleich sind (Wertgleichheit)
  • sortiert sind

Aufgabe: Mutation von Listen programmieren

Definieren Sie eine Prozedur replace mit drei Parametern a, b, und c, die die Liste a mutiert. In der Liste a sollen dabei alle Vorkommen der Teilliste in b durch die Liste in c ersetzt werden. Verwenden Sie dazu außer slice assignments keine weiteren vordefinierten mutierenden Methoden. Schreiben Sie mit Hilfe der definierten Prozedur ein Programm, das alle Vorkommen der Zahlenfolge 1,2,3 in der Liste [1,2,3,4,1,2,1,2,3,4] durch die Zahl 123 ersetzt und das Ergebnis [123,4,1,2,123,4] ausgibt.