Integer From A Float List?!?

Nick Coghlan ncoghlan at iinet.net.au
Fri Mar 4 22:54:53 EST 2005


Bill Mill wrote:
> You're going to have to use loops. I don't know how Matlab can do it
> without them, unless it maintains the matrix as a list of floats and
> simply *views* it as a list of ints. More likely, it simply hides the
> loop away from you. Anyway, here's some ways to do it:
> 
> preferable: int_matrix = [int(x) for x in matrix]
> old way: int_matrix = map(int, matrix)
> explicit:
> int_matrix = []
> for x in matrix:
>     int_matrix.append(int(x))
> 

C:\>python -m timeit -s "floats = map(float, range(1000))" "ints = map(int, floa
ts)"
1000 loops, best of 3: 481 usec per loop

C:\>python -m timeit -s "floats = map(float, range(1000))" "ints = [int(x) for x
  in floats]"
1000 loops, best of 3: 721 usec per loop

C:\>python -m timeit -s "floats = map(float, range(1000))" "ints = []" "for x in
  floats: ints.append(int(x))"
1000 loops, best of 3: 992 usec per loop

For builtin functions, map is usually the fastest option (and, IMO, the most 
readable). List comprehensions should be preferred to map + lambda, though.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at email.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://boredomandlaziness.skystorm.net



More information about the Python-list mailing list