Die Anzahl der verschiedenen Listen [1,2]
ist . Wir können dies berechnen, indem über die Programmzeile-per-line gehen:
lst1 = [1, 2] # we create our first [1,2]
Als nächstes werden wir eine Liste von Listen, konstruieren wie:
lst2 = [[1, 2], list(lst1), lst1]
# ^ ^
Hier haben wir zwei zusätzliche [1,2]
Listen erstellt (bezeichnet mit den Carets ^
). Die erste durch eine andere [1,2]
Liste literal, und die zweite durch den Aufruf list(lst1)
. Der Konstruktor erstellt eine seichte Kopie der Liste, also eine neue Liste [1,2]
.
Als nächstes machen wir eine flache Kopie lst2
:
lst3 = list(lst2)
Hier machen wir keine neuen [1,2]
Listen: Wir haben eine neue Liste mit drei Elementen erstellen, aber diese beziehen sich alle auf die gleichen Listen als lst2
.
lst3.append([1,2])
# ^
Als nächstes fügen wir eine neue[1,2]
zum lst3
. Das bringt also die Gesamtmenge von deutlich[1,2]
s zu vier.
Als nächstes werden wir über die lst3
iterieren und eine flache Kopie von jedes Element in lst3
machen. Da lst3
vier verschiedene [1,2]
Objekte hat, so werden wir weitere vier [1,2]
Objekte vorstellen:
lst4 = []
for lst in lst3:
lst4.append(list(lst))
# ^
So erhalten wir insgesamt:
Expression | Count
-----------+------
lst1 = ... | 1
lst2 = ... | 2
lst3 = ... | 0
lst3.appe. | 1
for ... | 4
-----------+------
TOTAL 8
Speicherlayout:
nach den Operationen Der Speicher sieht wie folgt aus:
lst1 -------------+------------+-> [1,2]
| |
+---+---+-|-+ |
lst2 -> | o | o | o | |
+-|-+-|-+---+ |
| \--------> [1,2] |
+-> [1,2] ^ |
| /----------/ |
| | /------------/
+-|-+-|-+-|-+---+
lst3 -> | o | o | o | o---> [1,2]
+---+---+---+---+
/-> [1,2]
| /-> [1,2]
+-|-+---+-|-+---+
lst4 -> | o | o | o | o---> [1,2]
+---+-|-+---+---+
\-> [1,2]
Das sieht nach Hausaufgaben aus ... Was hast du probiert? Was ist deine eigene Idee? Warum? –