Est-ce que quelqu'un sait si Python a une fonction intégrée à travailler pour imprimer même des valeurs. Comme range () par exemple.
Merci
Vous pouvez écrire range(0, 10, 2)
.
Il suffit d'utiliser une étape de 2:
range(start, end, step)
Essayer:
range( 0, 10, 2 )
Je ne sais pas si c'est ce que vous voulez entendre, mais il est assez simple de filtrer les valeurs impaires avec la compréhension de 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 facultatif Step Size pour que range
compte jusqu'à 2.
>>> if 100 % 2 == 0 : print "even"
...
even
Il y a aussi quelques façons d'écrire un nombre infini d'itérateurs paresseux et pairs.
Nous allons utiliser le module itertools
et more_itertools
1 faire des itérateurs qui imitent 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 ces dernières options peuvent générer une séquence infinie de nombres pairs, 0, 2, 4, 6, ...
.
Vous pouvez traiter ceux-ci comme n'importe quel générateur en bouclant dessus, ou vous pouvez sélectionner n
nombres dans la séquence via itertools.islice
ou take
à partir des recettes de itertools e .::
mit.take(10, a)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Ceci est équivalent à list(range(0, 20, 2))
. Cependant, contrairement à range()
, l'itérateur est suspendu et donnera le prochain lot de nombres pairs s'il est exécuté à nouveau:
mit.take(10, a)
# [20, 22, 24, 26, 28, 30, 32, 34, 36, 38]
Détails
Les options présentées sont tous des itérateurs infinis qui start
avec un entier, c'est-à-dire 0
.
itertools.count
renvoie la prochaine valeur incrémentée d'un step=2
(voir code équivalent ).more_itertools.tabulate
est une recette itertools qui mappe une fonction à chaque valeur d’une ligne numérique (voir code source ). more_itertools.iterate
renvoie la valeur de départ (0
). Il applique ensuite une fonction au dernier élément (incrémentant de 2), renvoie le résultat et répète ce processus (voir code source ).1Un package tiers qui implémente de nombreux outils utiles, notamment les recettes d'itertools tels que take
et tabulate
.