Produkte (Iteratoren) wie Karten von Python3 ・ Generator-Einschlussnotation in Klammern ist verfügbar

Fragliches Python-Skript (Python 3.5 für Windows)

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)

Ausführungsergebnis

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]

Was ich von nun an gelernt habe

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. ** ** **

Verwendung der Karte

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").

Über andere Objekte

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

Produkte (Iteratoren) wie Karten von Python3 ・ Generator-Einschlussnotation in Klammern ist verfügbar
Verwenden Sie Stoff wie in Python (Stoff3)
Module häufig verwendeter Funktionen in Python (z. B. Lesen externer Dateien)
Memorandum von Python-Anfängern
Verwenden Sie Python für formatierte Ausgaben wie C / C ++ printf