Jump to content
Reno70

Listas de outras funções

Recommended Posts

Reno70

Eu tenho duas funções nas quais numa delas temos definidas listas, e preciso de usar essa mesma lista mas noutra função e não estou a ver como faço

def funcao1():
...
lista1 = [.....]
....

def funcao2():
#preciso de chamar a lista aqui

Edited by Reno70

Share this post


Link to post
Share on other sites
pwseo

Se a função lista1 for definida fora das funções resolves o teu problema.

Share this post


Link to post
Share on other sites
Reno70

Mas a lista não é dada , eu tenho de fazer essa função para " achar " a lista e depois tenho de usar essa lista noutra função

Share this post


Link to post
Share on other sites
pwseo

E se definires uma variável fora das funções, por exemplo lista1 = [], e depois preenches essa lista dentro da primeira função... e poderás utilizá-la na segunda função também.

Share this post


Link to post
Share on other sites
Reno70

Tipo assim :


lista1 = []

def funcao1():
  ...
  lista2=[]
  lista1.extend(lista2)

def funcao2():
 ...
# e aqui ja poderei usar a lista1 ?

Edited by Reno70

Share this post


Link to post
Share on other sites
pwseo

Não há nada como experimentares. Não se pode responder a tudo; para vocês aprenderem a programar, precisam de experimentar.

Share this post


Link to post
Share on other sites
Reno70

Ja testei nao deu, fiz um print da lista 1 a ver se funcionava e da lista vazia e se fizer a parte do append fora da função nao reconhece a lista 2 , fiz assim:

lista1 = []
def funcao1():
  ...
  lista2=[]
  lista1.extend(lista2)
print lista1

def funcao2():
 ...

Edited by Reno70

Share this post


Link to post
Share on other sites
pwseo

Tens que mostrar o código que utilizaste para testar para percebermos o que está a acontecer.

Outra pergunta: por que motivo precisas de modificar uma variável externa? não podes simplesmente utilizar o resultado de funcao1() como argumento de funcao2()? Ou isto é assim exigido nalgum enunciado?

Share this post


Link to post
Share on other sites
Reno70

É o mesmo enunciado que anda aqui neste forum , aquele da média das idades dos animais ? A 1º função é para calculares a lista de dicionarios com a média e depois precisas dessa lista na 2a função para transformar em ficheiro CSV , é o enunciado que o Shad07 pos.

A questão é que o codigo que esta para tras é irrelevante porque serve apenas para chegar a lista 1 , depois nao consigo juntar a 1 á lista 2.

donos=[]
def calcula_media(tabela_animais,tabela_donos):
lista_dicionario= [....]
donos.extend(lista_dicionario)

print donos

def media_idades(ficheiro_animais, ficheiro_donos,ficheiro_media):
	....
	for linha in donos:
	 ......

Esse print que eu fiz ai está-me a dar lista vazia [ ] e deveria dar a lista igual á lista_dicionario para depois a puder usar na 2a funçao.

Edited by Reno70

Share this post


Link to post
Share on other sites
pwseo

Reno70,

Por que motivo é que vocês não tentam resolver os problemas falando uns com os outros? De qualquer modo, eu já referi uma possível solução sem utilizares uma variável externa: utilizas o resultado de uma função como argumento da outra.

Quanto ao código que dizes ser irrelevante, não é bem assim, pois o comportamento de Python no que diz respeito a variáveis locais e globais tem muito que se lhe diga. Não falam disto nas aulas?

Share this post


Link to post
Share on other sites
Reno70

A questão é que aqui parece-me estar a falar alguma coisa muito simples uma vez que o que eu estou a fazer tambem o é. Eu agora testei diferente por exemplo:

donos=[]
def calcula_media(tabela_animais,tabela_donos):
    lista_dicionario= [1,2,3]
    donos.extend(lista_dicionario)

print donos

Esta de cima dá lista vazia , no entanto se eu meter o print dentro da função a lista donos ( variavel global ) já aparece [1,2,3], como é que isso me pode ajudar para passar para a 2º função?

Share this post


Link to post
Share on other sites
pwseo

Reno70,

Quem vos está a ensinar Python? Conheces o conceito de «função»? Se sim, para que serve a palavra-reservada return dentro de uma função? E como poderias utilizá-la para aplicar uma função ao resultado de outra função?

São lacunas bastante graves que terás que estudar.

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.