Est-ce que quelqu'un sait si Python a une fonction intégrée à travailler pour imprimer des valeurs paires. Comme range() par exemple.Numéros pairs en Python
Merci
Est-ce que quelqu'un sait si Python a une fonction intégrée à travailler pour imprimer des valeurs paires. Comme range() par exemple.Numéros pairs en Python
Merci
Vous pouvez écrire range(0, 10, 2)
.
Il suffit d'utiliser une étape de 2:
range(start, end, step)
Essayez:
range(0, 10, 2)
>>> if 100 % 2 == 0 : print "even"
...
even
Je ne sais pas si c'est ce que vous voulez entendre, mais il est assez trivial de filtre sur les valeurs impaires avec la compréhension de la liste.
evens = [x for x in range(100) if x%2 == 0]
ou
evens = [x for x in range(100) if x&1 == 0]
Vous pouvez également utiliser le paramètre de taille étape facultative pour range
compter par 2.
Vous pouvez aussi écrire 'map (lambda x: x * 2, range (0, 50))' – SLaks
Complétez cette dernière compréhension pour obtenir les cotes: cotes = [x pour x dans la gamme (100) si 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)
Merci pour votre contribution. Notez qu'il s'agit d'une très vieille question qui contient déjà de nombreuses bonnes réponses. En particulier, [la réponse de Sapph] (https://stackoverflow.com/a/2184774/2124834) contient déjà la technique que vous décrivez. – Marein
Il y a aussi quelques façons d'écrire un itérateur paresseux et infini de nombres pairs.
Nous allons utiliser le module itertools
et more_itertools
1 pour faire itérateurs émulant range()
.
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)
Toutes les dernières options peuvent générer une suite infinie des nombres pairs, 0, 2, 4, 6, ...
.
Vous pouvez traiter comme tout ce générateur de plus les boucles, ou vous pouvez sélectionner n
numéros de la séquence via itertools.islice
ou take
de la itertools recipes .: par exemple
mit.take(10, a)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Cela équivaut à list(range(0, 20, 2))
. Cependant, contrairement à range()
, l'itérateur est en pause et donnera le prochain lot de chiffres même si elle est exécutée à nouveau:
mit.take(10, a)
# [20, 22, 24, 26, 28, 30, 32, 34, 36, 38]
Détails
Les options présentées sont toutes itérateurs infinies qui start
avec un entier, c'est-à-dire 0
.
itertools.count
donne la valeur suivante incrémentée d'un step=2
(voir equivalent code).more_itertools.tabulate
est un itertools recipe qui mappe une fonction à chaque valeur d'une ligne numérique (voir source code).more_itertools.iterate
donne la valeur de départ (0
). Il applique ensuite une fonction au dernier élément (en incrémentant de 2), produit ce résultat et répète ce processus (voir source code).1 Un paquet tiers qui met en œuvre de nombreux outils utiles, y compris itertools recipes tels que take
et tabulate
.
Tout comme xrange() – Will
+ 1 pour les liens vers des documents ... pourquoi tant de gens? –