Jump to content

Lista de raízes quadradas python


Shad07

Recommended Posts

Como é que posso fazer uma função que receba um parâmetro n, que devolva uma lista das primeiras n raizes quadradas, utilizando funções de ordem superior, em Python.

Como abaixo demonstrado:

[sqrt(1), sqrt(1)+sqrt(2), sqrt(1)+sqrt(2)+sqrt(3), ...]

Já tentei fazer assim desta forma:

return sum([x**0.5 for x in range(1,n+1)])

Mas não me dá o que quero, dá-me apenas a soma das n raízes.

Edited by Shad07
Link to comment
Share on other sites

Precisas de duas listas por compreensão, não apenas uma:

  1. Uma lista com as raízes quadradas:
    [sqrt(a) for a in range(i)]

    Se reparares, aqui tens um range que deverá ser definido na segunda lista por compreensão.

  2. Uma lista que gira o número de raízes necessária:
    [(element) for i in range(1,10)]

    E aqui temos o nosso contador i do range da primeira lista.

 

A cada iteração da lista 2, terás um range crescente na lista 1, gerando precisamente o que precisas (retirei os sqrt para simplificar a leitura):

[[1], [1,2], [1,2,3], [1,2,3,4], ...]

 

Para que isto sejam somas, usamos a função sum. Na lista 2, (element) é, nada mais nada menos, do que o somatório da lista 1! Logo:

from math import sqrt

l = [sum([sqrt(a) for a in range(i)]) for i in range(1,10)]

 

Cumprimentos.

  • Vote 1

Knowledge is free!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.