from sys import stderr
from copy import copy
N = 5
L1 = list(range(1,N + 1)) #[1,2,3,4,5]
print("L1 =", L1, file = stderr)
L2 = map(lambda i: i ** 2, L1)
L3 = map(lambda i: i ** 2, L1)
L4 = copy(L2)
L5 = [i ** 2 for i in L1]
L6 = list(map(lambda i: i ** 2, L1))
print("L2 =", list(L2)) #[1,4,9,16,25]
print("L2 =", list(L2)) #[1,4,9,16,25]Ich denke ... ?? ??
print("L3 =", list(L3)) #[1,4,9,16,25]
print("L4 =", list(L4)) #[1,4,9,16,25]Ich denke ... ?? ??
print("L5 =", list(L5)) #[1,4,9,16,25]
print("L5 =", list(L5)) #[1,4,9,16,25]
print("L6 =", list(L6)) #[1,4,9,16,25]
print("L6 =", list(L6)) #[1,4,9,16,25]
print("L1 =", L1)
L1 = [1, 2, 3, 4, 5]
L2 = [1, 4, 9, 16, 25]
L2 = []
L3 = [1, 4, 9, 16, 25]
L4 = []
L5 = [1, 4, 9, 16, 25]
L5 = [1, 4, 9, 16, 25]
L6 = [1, 4, 9, 16, 25]
L6 = [1, 4, 9, 16, 25]
L1 = [1, 2, 3, 4, 5]
Daraus können Sie ersehen, dass der Zugriff auf das von ** map erstellte Objekt nur einmal gültig ist ** (L2 ・ L3). ** Außerdem war es sinnlos, eine flache Kopie (L4) mit copy.copy zu erstellen. ** Verwenden Sie die Listeneinschlussnotation **, wenn Sie mehrmals darauf zugreifen (L5, aber ** außerhalb der eckigen Klammern **) oder ** sofort auflisten oder tippen ** ( L6) Sollte sein. ** Wenn Sie den Inhalt eines Kartenobjekts beim Debuggen anzeigen müssen, sind Sie aufgrund dieser Eigenschaften möglicherweise nur beim Debuggen von einem ungeklärten Fehler abhängig. ** ** **
Wie im Kommentarbereich ausgeführt, ** Wenn der Generator in Klammern angegeben ist, kann er wie eine Karte entsorgt werden. ** ** **
Grundsätzlich können Sie Situationen wie "L2" und "L4" vermeiden, indem Sie nach der Generierung nur einmal darauf zugreifen (einschließlich Auflisten oder Tippen wie "L6").
range, zip usw. erzeugen ähnliche Objekte, können aber auch wegwerfbar sein. </ del>. Bitte seien Sie vorsichtig, wenn Sie mehrmals darauf zugreifen (aus dem Kommentar).
Recommended Posts