Wenn Sie diese Liste Verständnis:Liste Comprehensions und eine Zeile für Schleifen
squares = [x**2 for x in range(100000)]
Es wäre viel Speicherplatz einnehmen, so könnte man das Gleiche mit einem Generator tun:
squares = (x**2 for x in range(100000))
lassen Sie uns jetzt sagen, dass ich nur eine einzige Zeile verwenden möchten for-Schleife alle diese Plätze zu drucken:
[print(square) for square in squares]
Meine Frage ist: Wird auf diese Weise eine Liste erstellt (sieht wie ein Listenverständnis aus)? Wenn ja, wird diese Liste im Speicher gespeichert? (Wenn ja, würde es keinen Sinn machen, einen Generator zu verwenden, wenn die squares
zu schaffen, weil die ohnehin in der anderen Liste gespeichert bekommen.) Und noch etwas: Wenn Sie dies tun:
[1, 2, 3, 4, 5, 6]
ohne es zu zuweisen Werden diese Werte für irgendeine Variable im Speicher gespeichert?
Eine wichtige Anmerkung, sie werden immer noch im Speicher von dem Interpreter erstellt und dann durch den Müllsammler wegen des Fehlens von Referenzen zerstört. – user312016
Ja ja @ user312016, deshalb habe ich * geschrieben "anfänglich wird Speicher zugewiesen, aber es wird sofort freigegeben, da Python sehen kann, dass du es nicht verwendest" * :-). Ich interpretierte OPs "im Speicher gespeicherte Fragen" als Frage, ob der Speicher tatsächlich * nach * der Anweisung ausgeführt wird.(im interaktiven Modus '_' hält es herum, aber das ist eine Ausnahme) –
Woops, ich habe diesen Teil vermisst – user312016