"Bill Mill" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > On Fri, 4 Mar 2005 22:35:48 +0100, [EMAIL PROTECTED] > <[EMAIL PROTECTED]> wrote: > > Hello NG, > > > > I was wondering if there is a way to obtain, from a list of floats, > > a list of integers without loops. Probably is a basic question, but I can't > > find an answer... I have had my eyes blinded by Matlab for years, but now > > that I discovered Python+wxPython there seems to be no limit on what one > > can do with these 2 tools. Anyway, following the Matlab style, I would like > > to do something like this: > > > > matrix = [1.5, 4.3, 5.5] > > integer_matrix = int(matrix) (float for Matlab) > > 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)) > > Any of these methods should be neither really slow nor really fast, > but the list comprehension should be the fastest (I think). Anyway, if > you're going to be doing lots of large matrices, and want some of your > old matlab stuff, check out numpy and numarray at > http://numeric.scipy.org/ . > > Also, somebody was recently posting on here about a python <-> matlab > bridge that they developed; you should search the archives for that > (it was in february, I think). > > And, finally, when doing scientific stuff, I found IPython > (http://ipython.scipy.org/) to be an invaluable tool. It's a much > improved Python interpreter. > > Peace > Bill Mill > bill.mill at gmail.com
Using numpy, your example would be: >>> from Numeric import array >>> matrix = array([1.5, 4.3, 5.5]) >>> integer_matrix = matrix.astype(int) George -- http://mail.python.org/mailman/listinfo/python-list