Übungen
Aufgabe 1: Zahl-Objekte und ihre Identitätsnummern in Python
Analysiere den folgenden Python-Dialog. Was fällt auf, wenn man die Identitätsnummern von Zahlen vom
Typ int
bzw. vom Typ float
vergleicht?
>>> id(2)
9721412
>>> type(2)
<type 'int'="">
>>> id(1+1)
9721412
>>> type(1+1)
<type 'int'="">
>>> id(1.0)
12365664
>>> type(1.0)
<type 'float'="">
>>> id(1.0)
10514784
>>> type(1.0)
<type 'float'="">
</type></type></type></type>
Aufgabe 2: Kopieren von Listen
Die von der Variablen L
verwaltete Liste soll kopiert und anschließend verändert werden.
Welche Version ist korrekt?
L = [0, 1, 2, 3, 4, 5]
M = L
i = 0
while i<len(m): +="" 1="" <="" code="" i="i+1" m[i]="M[i]" print(l)="" print(m)="">
</len(m):>
oder
L = [0, 1, 2, 3, 4, 5]
M = L[:]
i = 0
while i<len(m): +="" 1="" <="" code="" i="i+1" m[i]="M[i]" print(l)="" print(m)="">
</len(m):>
Warum zeigen die beiden Versionen ein unterschiedliches Verhalten?
Aufgabe 3: Ein Listenelement durch ein anderes ersetzen
Gegeben sind die Deklarationen der Funktionen entfernen
und einfuegen
.
def entfernen(L, i):
H = L[:i] + L[(i+1):]
return H
def einfuegen(L, x, i):
H = L[:i] + [x] + L[i:]
return H
# Test
L = [0, 1, 2, 3, 4]
print(id(L))
L[1] = 5
print(L)
print(id(L))
L = [0, 1, 2, 3, 4]
print(id(L))
L = einfuegen(entfernen(L, 1), 5, 1)
print(L)
print(id(L))
Welche Ausgaben erwartest du hier? Überzeuge dich, ob deine Erwartungen zutreffen. Erkläre die Ergebnisse.
Aufgabe 4: Ein Listenelement entfernen und wieder einfügen
Das folgende Testprogramm zeigt zwei Möglichkeiten, wie man ein Listenelement durch ein anderes ersetzt.
# Test
L = [0, 1, 2, 3, 4]
print id(L)
L = einfuegen(entfernen(L, 1), 5, 1)
print(L)
print(id(L))
L = [0, 1, 2, 3, 4]
print(id(L))
L.__delitem__(1)
L.insert(1, 5)
print(L)
print(id(L))
Welche Ausgaben erwartest du hier? Überzeuge dich, ob deine Erwartungen zutreffen. Erkläre die Ergebnisse.