Weiß jemand, ob Python eine integrierte Funktion zum Drucken von geraden Werten hat. Wie zum Beispiel range().Gerade Zahlen in Python
Dank
Weiß jemand, ob Python eine integrierte Funktion zum Drucken von geraden Werten hat. Wie zum Beispiel range().Gerade Zahlen in Python
Dank
Sie range(0, 10, 2)
schreiben können.
Verwenden Sie einfach einen Schritt 2:
range(start, end, step)
Versuchen:
range(0, 10, 2)
>>> if 100 % 2 == 0 : print "even"
...
even
Ich weiß nicht, ob dies ist, was Sie hören wollen, aber es ist ziemlich trivial Filter aus ungeraden Werten mit Listenverständnis.
evens = [x for x in range(100) if x%2 == 0]
oder
evens = [x for x in range(100) if x&1 == 0]
Sie auch den optionalen Schritt Größenparameter für range
zählen durch 2.
Sie könnten auch 'map (lambda x: x * 2, range (0, 50)) 'schreiben – SLaks
Ergänzen Sie das letzte Verständnis um Odds zu erhalten: odds = [x für x im Bereich (100) wenn x & 1! = 0] –
#This is not suggestible way to code in Python, but it gives a better understanding
numbers = range(1,10)
even = []
for i in numbers:
if i%2 == 0:
even.append(i)
print (even)
a = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
b = [i for i in a if i % 2 == 0]
print("Original List -->", a,"\n")
print("and the Even Numbers-->", b)
Danke für Ihren Beitrag. Beachten Sie, dass dies eine sehr alte Frage ist, die bereits viele gute Antworten enthält. Insbesondere enthält [die Antwort von Sapph] (https://stackoverflow.com/a/2184774/2124834) bereits die Technik, die Sie beschreiben. – Marein
Es gibt auch ein paar Möglichkeiten nutzen könnten, um zu schreiben ein fauler, unendlicher Iterator mit geraden Zahlen.
Wir werden das itertools
Modul verwenden und more_itertools
1 Iteratoren zu machen, die range()
emulieren.
import itertools as it
import more_itertools as mit
# Infinite iterators
a = it.count(0, 2)
b = mit.tabulate(lambda x: 2 * x, 0)
c = mit.iterate(lambda x: x + 2, 0)
Alle der letzteren Optionen können eine unendliche Folge von geraden Zahlen, 0, 2, 4, 6, ...
erzeugen.
Sie können diese wie jeder Generator behandeln, indem über sie Looping, oder Sie können n
Zahlen aus der Folge über itertools.islice
oder take
vom itertools recipes beispiels wählen .:
mit.take(10, a)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Dies zu list(range(0, 20, 2))
entspricht. Doch im Gegensatz zu range()
wird der Iterator pausieren und wird die nächste Charge von geraden Zahlen ergibt, wenn wieder läuft:
mit.take(10, a)
# [20, 22, 24, 26, 28, 30, 32, 34, 36, 38]
Einzelheiten
Die Optionen präsentiert wird alle unendlich Iteratoren dass start
mit einem Ganzzahl, dh 0
.
itertools.count
ergibt den nächsten um step=2
inkrementierten Wert (siehe equivalent code).more_itertools.tabulate
ist eine itertools recipe, die eine Funktion auf jeden Wert einer Nummernzeile abbildet (siehe source code).more_itertools.iterate
ergibt den Startwert (0
). Es wendet dann eine Funktion auf das letzte Element an (inkrementiert um 2), liefert das Ergebnis und wiederholt diesen Prozess (siehe source code).1 Ein Drittanbieter-Paket, das viele nützliche Tools implementiert, einschließlich itertools recipes wie take
und tabulate
.
Wie xrange() – Will
+1 für tatsächliche Links zu docs ... warum tun so wenige Leute stören? –