Ir para o conteúdo
msmsms

como converter lista de str para flot?

Mensagens Recomendadas

msmsms

tenho uma duvida quanto a converçao de tipos

tendo eu uma lista = ['0.0','1.0'] como é que eu a converto para [0.0,1.0]?

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

Usas type casting, a conversão que o Python utiliza.

>>> float('2.4')
2.4

Para uma lista, fazes uma List Comprehension:

[float(elem) for elem in lista]

mas eu não quero fazer por elemento!

eu tenho uma lista com 80 elementos que estão em string (algarismos)

e então quero converter os elementos dessa lista para float

como exemplo: lista = ['0','1'] e quero lista = [0,1]

Editado por brunoais
2x quote da mm coisa não, por favor.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

sim sim eu adaptei mas deu string na mesma

(nao preciso saber fazer normal e nao por lista por compreensao)

def p7():

   f = open('c:\\suporte\\temperaturas.txt', 'r')
   leitura = f.read()
   split = leitura.split('\n')

   # remove elemento vazio
   c = ''
   for elem in split:
       if elem in c:
           split.remove(elem)

   for elem in split:
       linhas = elem.split('\t')
       [float(elem) for elem in linhas]
       print linhas

Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Uma lista por compreensão é uma lista. Logo, deve ser atribuída a uma variável. É normal que não estejas a obter os floats porque não estás a atribuir a listcomp em lado nenhum.

(nao preciso saber fazer normal e nao por lista por compreensao)

Como assim?


Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

eu penso que o python deveria fazer float(lista) mas como deve ser linguagem antiga nao faz

mas nao existe nada equivalente em python?

genero exeitem as funções max, min, sum, para fazer uma serie de coisas logo ás listas

e converter elementos nao ha funções?

o que é listcomp?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

eu penso que o python deveria fazer float(lista) mas como deve ser linguagem antiga nao faz

Python? Antiga? LOOL

Não estejas à espera que as linguagens tenham toda a papinha feita. Python ainda assim tem uma panóplia enorme de módulos. Mais a mais, se não existe determinada função, um programador não se acanha nem reclama: programa-a!

mas nao existe nada equivalente em python?

genero exeitem as funções max, min, sum, para fazer uma serie de coisas logo ás listas

e converter elementos nao ha funções?

É assim, esses métodos recebem como argumento uma lista. float não recebe como argumento uma lista, mas sim elementos individuais. Daí a necessidade de se utilizar métodos mais "caseiros", entre eles as listcomps.

o que é listcomp?

É a abreviatura de List Comprehension.

Um conselho: as listcomps devem ser um conhecimento obrigatório em Python. Se ainda não sabes, aconselho-te a começares a estudá-las, são muito úteis e resolvem muitos problemas de uma forma simples, rápida e compacta.

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

sim eu testei o teu listcomp e deu certo (não estava a ligar esse nome ás listas por compreensão)

for elem in split:

linhas = elem.split('\t')

for elem in linhas:

l = [float(elem) for elem in linhas]

print l

existe alguma lista dessas listas por compreensão?

porquê que se chamam lista por compreensão quando são mais formulas que se colocam de memoria?

qual é a alternativa á lista por compreensão [float(elem) for elem in linhas] para este problema?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

As listas por compreensão não são fórmulas que se decoram e não há nenhuma lista delas. São construtores de listas compactos e que devem ser entendidos. No início não parece fácil, eu também passei por isso, mas garanto-te que, depois de entrares no "ritmo", começas a pensar logo em listcomps em tudo quanto é sítio para resolver muita coisa em Python.

A alternativa será sempre uma estrutura for, claro. A própria estrutura da listcomp indica logo isso.


Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

As listas por compreensão não são fórmulas que se decoram e não há nenhuma lista delas. São construtores de listas compactos e que devem ser entendidos. No início não parece fácil, eu também passei por isso, mas garanto-te que, depois de entrares no "ritmo", começas a pensar logo em listcomps em tudo quanto é sítio para resolver muita coisa em Python.

A alternativa será sempre uma estrutura for, claro. A própria estrutura da listcomp indica logo isso.

ta eu percebi esse exemplo de lista por compreensao e ficou registado na minha memoria a formula da conversão

conv = [flot(elem) for elem in ] e assim como faço para o float tb devo fazer para os outros tipos e vou experimentar

obrigado

Editado por brunoais
Quote duplo não! Este é o ultimo aviso, para a próxima é a doer.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djthyrax

mas eu não quero fazer por elemento!

eu tenho uma lista com 80 elementos que estão em string (algarismos)

e então quero converter os elementos dessa lista para float

como exemplo: lista = ['0','1'] e quero lista = [0,1]

É mais simples fazer simplesmente map(float, lista)

http://docs.python.org/2/library/functions.html#map


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pedro C.

As listas podem ter elementos de diferentes tipos lá dentro pelo que é possível transformar a lista original elemento a elemento:

lista = ['0','1']
for i in xrange(len(lista)):
 lista[i] = float(lista[i])
print lista

Existem funções que transformam a lista de uma virada. Por exemplo o float_() do numpy mas devolve-te um array (que tem características diferentes de uma lista).

import numpy as np
lista = ['0','1']
np.float_(lista)

Resultado é: array([ 0., 1.])

Se queres de facto meter como argumento a lista numa função que converte todo o resultado então a solução do djthyrax (que eu não conhecia e parece-me que é python nativo) é ideal:

lista = ['0','1']
lista = map(float,lista)
type(lista)

Resultado é: <type 'list'> (e sim, tem floats lá dentro).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.