Erzeugt eine Liste von geraden Zahlen in Python

7

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%     
user1486654 27.06.2012, 19:09
quelle

11 Antworten

14

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!

    
Erty Seidohl 27.06.2012 19:14
quelle
4

Das folgende Beispiel sollte Ihr Problem lösen.

%Vor%     
8bitwide 27.06.2012 19:12
quelle
3

In Ihrem speziellen Fall funktioniert my_list[1::3] . Es gibt immer zwei ungerade ganze Zahlen zwischen geraden ganzen Zahlen in Fibonacci: gerade, ungerade, ungerade, gerade, ungerade, ungerade .....

%Vor%     
Akavall 27.06.2012 19:15
quelle
2

Sie können dies mit einem Listenverständnis tun:

%Vor%

Sie können auch die Funktion filter verwenden.

%Vor%

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 :

%Vor%

Oder mithilfe eines Generatorausdrucks :

%Vor%     
Dave Webb 27.06.2012 19:17
quelle
1

iteriere durch die Liste und benutze den Modulo-Operator, um auch

zu prüfen %Vor%     
javajavajava 27.06.2012 19:12
quelle
0

Nur zum Spaß, überprüfen, ob number%2 != 1 auch funktioniert;)

%Vor%

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.

    
mgilson 27.06.2012 19:18
quelle
0

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.

    
Levon 27.06.2012 19:16
quelle
0

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%     
Hugh Bothwell 28.06.2012 02:01
quelle
0

Überprüfen Sie dies einfach

%Vor%     
Ankit Vyas 24.03.2014 07:30
quelle
0

Sie können dies mit der Filterfunktion wie folgt tun:

%Vor%     
Eng.Boniphace Udoya 09.02.2018 06:50
quelle
-1
%Vor%     
user3894953 31.07.2014 09:20
quelle

Tags und Links