Im Grunde brauche ich Hilfe beim Erzeugen gerader Zahlen aus einer Liste, die ich in Python erstellt habe:
%Vor%Ich habe ein paar verschiedene Methoden ausprobiert, aber jedes Mal, wenn ich drucke, gibt es ungerade Zahlen, die mit den Zahlen gemischt sind!
Ich weiß, wie man gerade / ungerade Zahlen erzeugt, wenn ich einen Bereich von 0-100 machen würde, aber nur die geraden Zahlen von der vorher erwähnten Liste zu bekommen, hat mich ratlos gemacht!
P.S. Ich benutze Python erst seit ein paar Tagen, wenn es sich als extrem einfach herausstellt, danke im Voraus!
EDIT: Danke für all die Antworten, mit Deiner Hilfe bin ich durch dieses kleine Problem gekommen. Hier ist, was ich am Ende, um ein kleines Übungsprogramm abzuschließen, um die geraden Zahlen der Fibonacci-Sequenz zu summieren:
%Vor%Verwenden Sie ein Listenverständnis (siehe Durchsuchen einer Liste von Objekten in Python )
%Vor%Das ist gut, weil die Liste intakt bleibt und Sie mit evensList als normales Listenobjekt arbeiten können.
Hoffe, das hilft!
Sie können dies mit einem Listenverständnis tun:
%Vor% Sie können auch die Funktion filter
verwenden.
Wenn die Liste sehr lang ist, kann es wünschenswert sein, etwas zu erstellen, das über die Liste iteriert, anstatt eine Kopie davon mit ifilter
from itertools
:
Oder mithilfe eines Generatorausdrucks :
%Vor%iteriere durch die Liste und benutze den Modulo-Operator, um auch
zu prüfen %Vor% Nur zum Spaß, überprüfen, ob number%2 != 1
auch funktioniert;)
Beachten Sie, dass Sie einige clevere Dinge tun können, um Evens und Odds in einer Schleife zu trennen:
%Vor% Der obige Trick funktioniert, weil logische Ausdrücke ( ==
, >
usw.) mit den Zahlen True
(1) und / oder False
(0) arbeiten.
Sie können Listenverständnis verwenden, um eine neue Liste zu erstellen, die nur die geraden Mitglieder enthält Ihre ursprüngliche Liste.
%Vor%dann:
%Vor%ergibt
%Vor%Alternativ können Sie einen Generatorausdruck verwenden, wenn Sie nicht alle Zahlen benötigen sofort:
%Vor%Die Werte wären dann nach Bedarf verfügbar, zum Beispiel, wenn Sie eine for-Schleife verwendet haben:
z.B.
%Vor%Der Vorteil des Generatorausdrucks besteht darin, dass die gesamte Liste nicht im Speicher generiert und gespeichert wird, sondern dass die Werte so generiert werden, wie sie benötigt werden, wodurch der Speicherbedarf geringer wird. Es gibt noch andere wichtige Unterschiede, die Sie vielleicht später noch einmal lesen sollten, wenn Sie daran interessiert sind.
Anstatt alle Fibonacci-Zahlen zu erzeugen und dann nach even zu filtern, warum erzeugt man nicht nur die geraden Werte?
%Vor%erzeugt [2, 8, 34, 144, 610, 2584, 10946 ...]
dann wird Ihr Summencode:
%Vor%oder
%Vor%Sie können dies mit der Filterfunktion wie folgt tun:
%Vor%