Ich bin ein Anfänger bei Python, und das ist mein erster Beitrag, also sei nicht zu hart :). Ich habe in letzter Zeit mit Python herumgespielt und mich gefragt, ob sowas wie
%Vor%würde dazu führen, dass Python zuerst eine Liste aller Elemente erstellt und dann das Maximum findet, was zu O (2n) Zeit führt, oder es würde das Maximum verfolgen, während es für Θ (n) iteriert. Da sich der Bereich in Python3 unterscheidet (weil er iterierbar ist), würde das auch anders sein als in Python2?
Ihr Beispiel führt dazu, dass Python zuerst die gesamte Liste erstellt. Wenn Sie das vermeiden möchten, können Sie stattdessen einen Generatorausdruck verwenden:
%Vor%oder einfach:
%Vor% Natürlich (in Python 2) erstellt range
selbst eine ganze Liste, was Sie in diesem Fall also wirklich wollen:
Allerdings haben alle diese Ausdrücke hinsichtlich der Zeit die gleiche Komplexität. Der wichtige Unterschied ist, dass der letzte O (1) -Raum benötigt, während die anderen O (n) -Raum benötigen.
Listenkompressen generieren immer eine Liste (es sei denn, es wird eine Ausnahme ausgelöst). In den meisten Fällen wird stattdessen die Verwendung eines Genex empfohlen.
%Vor%