List of strings to list of floats ?

Madhusudan Singh spammers-go-here at spam.invalid
Mon Oct 17 13:17:12 EDT 2005


Steve Holden wrote:

> Madhusudan Singh wrote:
>> skip at pobox.com wrote:
>> 
>> 
>>>    Madhusudan> Is it possible to convert a very long list of strings to
>>>    a Madhusudan> list of floats in a single statement ?
>>>
>>>    Madhusudan> I have tried float(x) and float(x[:]) but neither work. I
>>>    Madhusudan> guess I would have to write a loop if there isn't a way.
>>>
>>>Try:
>>>
>>>    >>> los = ["123.0", "2", "1e-6"]
>>>    >>> map(float, los)
>>>    [123.0, 2.0, 9.9999999999999995e-07]
>>>    >>> [float(s) for s in los]
>>>    [123.0, 2.0, 9.9999999999999995e-07]
>>>
>>>Skip
>> 
>> 
>> Thanks. Now, a slightly more complicated question.
>> 
>> Say I have two lists of floats. And I wish to generate a list of floats
>> that is a user defined function of the two lists.
>> 
>> I tried :
>> 
>> def rpyth(x,y):
>>     r=sqrt(pow(x,2.0)+pow(y,2.0))
>>     return r
>> 
>> r1n=map(rpyth,x2n[1:len(x2n)-1],y2n[1:len(y2n)-1])
>> 
>> And I get an error complaining about floats.
> 
> ... but the error message is a secret so you don't want to tell us what
> it was? It's more helpful if you actually copied and pasted the exact
> error traceback you see, as this avoids any potential answerer having to
> guess what went wrong.
> 
> A brief description of what you were trying to do is also helpful, since
> it isn't obvious at first glance why you are omitting some of hte list
> elements.
> 
> regards
>   Steve

I apologize for that.

The error message is :

Traceback (most recent call last):
  File "takedata.py", line 163, in ?
    r1n=map(rpyth,x2n[1:len(x2)-1],y2n[1:len(y2)-1])
  File "takedata.py", line 15, in rpyth
    r=sqrt(pow(x,2.0)+pow(y,2.0))
TypeError: a float is required

I understand why the error is occuring (pow is not overloaded to accept
lists of floats instead of floats ?). How do I fix this ?



More information about the Python-list mailing list