Jump to content
Shad07

Lista de raízes quadradas python

Recommended Posts

Shad07

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

Share this post


Link to post
Share on other sites
thoga31

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!

Share this post


Link to post
Share on other sites
pwseo

Atenção, embora as listas por compreensão sejam implicitamente funções de ordem superior, não o são explicitamente, pelo que não sei se é isso que se pretende. Existe forma de resolver o problema recorrendo a funções de ordem superior explicitamente, utilizando map() (e reduce(), se quisermos ser picuinhas).

Share this post


Link to post
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.