filter function question - list processing in Python

lobozc at my-deja.com lobozc at my-deja.com
Wed Nov 24 17:17:06 EST 1999


1. Thank you for your answers. I infer from them that my reading of
_standard_ list processing functions in Python was correct.

2. I suspect that the second part of my posting may be a valid
postulate then. Since list processing is so useful Python should
consider adding a good set of primitives to the core library - not as
an external package.

In article <383BF71F.3E413E33 at compaq.com>,
  Greg Ewing <greg.ewing at compaq.com> wrote:
> lobozc at my-deja.com wrote:
> >
> > How should I pass additional parameter in 'filter'? 'map' has them,
> > filter doesn't - why? Say I have a list ['xxx.py','xxx.pyc'] and I
want
> > to have a function isExtension(x,'.py')
> > [No, I'm not interested in using lambda here in general].
>
> Why not? That's the shortest way to do it:
>
>    def filterExt(items, ext):
>       return filter(lambda x, ext=ext: isExtension(x,ext), items)
>
> However, a more Pythonic way of writing that is
>
>    def filterExt(items, ext):
>       result = []
>       for x in items:
>          if isExtension(x, ext):
>             result.append(x)
>       return result
>
> which is longer-winded but clearer. If you want something which
> is both short-winded and clear, you might like to try my List
> Comprehension syntax extension, which allows you to write
>
>    def filterExt(items, ext): # NOT STANDARD PYTHON
>       return [x for x in items if isExtension(x, ext)]
>
> The List Comprehensions patch is available from my web page:
> http://www.cosc.canterbury.ac.nz/~greg
>
> Greg
>
>  - which I can call with various
> > extensions to filter the list in variuos ways - how am I supposed
to do
> > that? [No, I'm not interested in using lambda here in general].
> >
> > In general, I note that Python has some standard functions
operating on
> > lists but they are curiously limited. It is a pity, since these are
the
> > functions which reduce line count significantly - as well as make
> > programming safer. I wonder what are the chances of repeating with
> > lists what Python did with regular expressions - copying the
> > functionality from a well tested and popular product?
> >
> > Mathematica has a set of list processing functions. As one can
expect
> > from an essentially functional language and a product where most
> > operations are done by list processing - for the last 10 years -
this
> > set is well thought out, complete and very, very useful.
> >
> > [For description see
> > http://documents.wolfram.com/v4/frames/frames.html, press
button 'built-
> > in functions', on the leftmost panel 'programming', to the right of
it
> > press 'functional programming' - eventually look for functions like
> > Map, Fold, Apply etc.].
> >
> > Sent via Deja.com http://www.deja.com/
> > Before you buy.
>


Sent via Deja.com http://www.deja.com/
Before you buy.




More information about the Python-list mailing list