From: <ast...@gm...> - 2008-04-16 03:24:16
|
Hi all, What's the difference between the following two methods (in Jython or in Python)? Is there a significant speed difference? Or is it just a matter of preference? Method 1: [x for x in someList if x == something] Method 2: filter(lambda x: x == something, somelist) Thanks in advance. |
From: David H. <Dav...@sa...> - 2008-04-16 14:54:35
|
I tried a performance test on CPython: $ python Python 2.4.4 (#2, Apr 5 2007, 20:11:18) [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import timeit >>> timeit.Timer("[x for x in someList if x == something]", setup="someList=range(10000); something=5000").timeit(1000) 2.1520359516143799 >>> timeit.Timer("filter(lambda x: x == something, someList)", setup="someList=range(10000); something=5000").timeit(1000) 4.0328309535980225 >>> You can try varying the size of the list, etc. But in this simple test, the first method of filtering was amost twice as fast. -----Original Message----- From: jyt...@li... [mailto:jyt...@li...] On Behalf Of ast...@gm... Sent: Tuesday, April 15, 2008 11:24 PM To: jython users Subject: [Jython-users] filtering lists Hi all, What's the difference between the following two methods (in Jython or in Python)? Is there a significant speed difference? Or is it just a matter of preference? Method 1: [x for x in someList if x == something] Method 2: filter(lambda x: x == something, somelist) Thanks in advance. ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ Jython-users mailing list Jyt...@li... https://lists.sourceforge.net/lists/listinfo/jython-users |
From: Frank W. <fwi...@gm...> - 2008-04-16 18:32:41
|
On Tue, Apr 15, 2008 at 11:24 PM, <ast...@gm...> wrote: > Hi all, > > What's the difference between the following two methods (in Jython or > in Python)? Is there a significant speed difference? Or is it just a > matter of preference? > > Method 1: > > [x for x in someList if x == something] > > Method 2: > > filter(lambda x: x == something, somelist) Method 1 is considered to be more "pythonic" (that is: more idiomatically correct Python). I at least find that style (List Comprehensions) to be easier to read. -Frank |
From: Moss P. <mo...@te...> - 2008-04-16 19:15:30
|
Frank and David cited the most compelling arguments for (1), but I thought I'd also call your attention to an interesting comment from Guido: He re-iterates both points, in the context of his attempt (since foiled) to remove filter as a built-in for Python 3000: http://www.artima.com/weblogs/viewpost.jsp?thread=98196 I would think the comment on comprehensions being faster would go double for Jython, since method invocation is so much more expensive than most other operations. Which is what we saw in David's simple benchmark. - moss Frank Wierzbicki wrote: > On Tue, Apr 15, 2008 at 11:24 PM, <ast...@gm...> wrote: > >> Hi all, >> >> What's the difference between the following two methods (in Jython or >> in Python)? Is there a significant speed difference? Or is it just a >> matter of preference? >> >> Method 1: >> >> [x for x in someList if x == something] >> >> Method 2: >> >> filter(lambda x: x == something, somelist) >> > > Method 1 is considered to be more "pythonic" (that is: more > idiomatically correct Python). I at least find that style (List > Comprehensions) to be easier to read. > > -Frank > > |