Écrit un petit code pour générer des nombres pairs.

>>>even = []
>>>[even for x in range(15) if x % 2 == 0] 

La sortie est - [(), (), (), (), (), (), ()]

Le code ci-dessus peut-il générer des nombres pairs si oui, quel est le correctif?

Comment puis-je avoir un bloc de code au lieu d'une instruction if dans la ligne ci-dessus, mon objectif est de générer des nombres premiers.

[prime pour x dans la plage (2,15) pour y dans la plage (1, int (x / 2)) si (x% y)! = 0 ................ ..]

-2
Suman 16 avril 2018 à 12:40

5 réponses

Meilleure réponse
p = [q for q in range(0, 15) if not q%2]
print(p)

Explication:

Si q est un nombre pair, q% 2 devient 0. Ainsi ajouté not après if

2
kvmahesh 16 avril 2018 à 09:54

Si vous avez besoin d'un générateur , il est intégré dans la fonction range en Python3:

range(0, 15, 2)

Est une séquence immuable qui contient tous les nombres entiers inférieurs à 15

En Python 2, range renvoie une vraie liste, donc elle peut répondre à vos besoins ou non. Dans tous les cas, vous pouvez utiliser une compréhension pour définir un vrai générateur:

( x for x in range(0, 15, 2) )
3
Serge Ballesta 16 avril 2018 à 09:57

Dans votre exemple, vous ajoutez «même» à la liste chaque fois que l'instruction if dans la compréhension de la liste est satisfaite. C'est pourquoi vous obtenez une liste de tuples vides

[x for x in range(15) if x % 2 == 0]

Serait la mise en œuvre correcte

3
Reine Stenberg 16 avril 2018 à 09:45

Voici comment générer des nombres pairs

filter(lambda x : x % 2, range(0, 15))
1
ErdoğanOnal 16 avril 2018 à 21:10
even = [ x for x in range(15) if x%2 == 0]

Juste une compréhension de liste

1
YoLecomte 16 avril 2018 à 09:43