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