J'ai le code suivant que je dois convertir en list-comprehension
(un paquebot). Cependant, je suis incapable de le faire. Le code calcule la plage d'entrée des nombres premiers allant de A
.convertir le double pour la boucle avec la fonction de lambda et casser à la compréhension de liste
def sieve(A):
l = []
f = lambda x : int(x**0.5)
for p in range(2,A+1):
for i in range(2, f(p) + 1):
if p % i == 0:
break
else:
l.append(p)
return l
Jusqu'ici j'ai suivi ce qui ne fonctionne pas. Surtout le break
dans for-loop
me rejette.
list(set([val for sublist in [[p for i in range(2, f(p) + 1) if p %i != 0 ] for p in range(2,A) ] for val in sublist]))
EDIT
Ajout de contraintes pour le problème. Le code ne peut être qu'une seule instruction, sans eval
ou exec
. Le code doit comporter au maximum 160 caractères.
Pourquoi? Je plains la personne qui doit essayer de déchiffrer cette compréhension de la liste. –
Pourquoi, en premier lieu, voulez-vous qu'il soit converti en liste de compréhension? –
Je sais, cela fait partie d'un problème en ligne qui n'accepte qu'une seule solution de ligne. À moins qu'il y ait un autre moyen de fournir un paquebot. –