String Fomat Conversion

Steven Bethard steven.bethard at gmail.com
Thu Jan 27 02:02:45 EST 2005


Stephen Thorne wrote:
> f = file('input', 'r')
> labels = f.readline() # consume the first line of the file.
> 
> Easy Option:
> for line in f.readlines():
>   x, y = line.split()
>   x = float(x)
>   y = float(y)
> 
> Or, more concisely:
> for line in f.readlines():
>   x, y = map(float, line.split())

Somewhat more memory efficient:

lines_iter = iter(file('input'))
labels = lines_iter.next()
for line in lines_iter:
     x, y = [float(f) for f in line.split()]

By using the iterator instead of readlines, I read only one line from 
the file into memory at once, instead of all of them.  This may or may 
not matter depending on the size of your files, but using iterators is 
generally more scalable, though of course it's not always possible.

I also opted to use a list comprehension instead of map, but this is 
totally a matter of personal preference -- the performance differences 
are probably negligible.

Steve



More information about the Python-list mailing list