Question

J'ai besoin des conseils sur la façon d'écrire un programme Python où il vous donne une liste des carrés parfaits premier n sous forme de liste. La sortie devrait ressembler à ceci:

How many squares?: 5  
[1, 4, 9, 16, 25]

est ce que j'ai jusqu'à présent:

n = int(raw_input("How many squares? "))

Maintenant, pour la partie suivante j'ai besoin de créer une liste des premières places de n. Toutes les suggestions sur la façon? Nous vous remercions de votre temps et des conseils.

Était-ce utile?

La solution

Utilisez une compréhension de la liste:

[ a*a for a in xrange(1, n + 1) ]

Autres conseils

  

Maintenant, pour la partie suivante je dois commencer à créer une liste des premières places de n. Toutes les suggestions sur la façon? Merci pour votre temps et des conseils.

Ceci est quelque chose que vous pouvez être aidé avec. Pour d'autre part, poster votre algorithme.

Utilisez RANGE pour générer une liste:

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Utilisez la compréhension de la liste pour obtenir la liste des x ^ 2

>>> [x**2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> 

Une réponse plus élégante est fournie par Novikov

n = int(raw_input("How many squares? "))
map((2).__rpow__, range(1, n+1))

ou

from operator import mul
n = int(raw_input("How many squares? "))
map(mul, *[range(1, n+1)]*2)

Quelqu'un a mentionné générateurs - c'est la façon dont vous les utilisez dans ce cas:

def sq(n):
    i=0
    while i<n:
        i+=1
        yield i*i

if __name__=="__main__":
    n = int(raw_input("How many squares? "))
    print list(sq(n))

Ou sur la carte et une fonction lambda

n = int(raw_input("How many squares? "))
map(lambda x: x*x, range(n))

si vous voulez à partir de 1

map(lambda x: x*x, range(1, n+1))

code:

list_squares=[]
for a in xrange(1, n+1):
 list_squares.append(a*a)
print list_squares

où n est une entrée d'utilisateur pour le nombre de places qu'il veut.

Si n=5 puis les regards de sortie comme:

[1, 4, 9, 16, 25]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top