Chris Angelico writes:
> On Sat, Nov 3, 2018 at 4:49 AM Stephen J. Turnbull
> <[email protected]> wrote:
> > Andre Delfino writes:
> > > Frequently, while globbing, one needs to work with multiple
> > > extensions. I’d like to propose for fnmatch.filter to handle a
> > > tuple of patterns (while preserving the single str argument
> > > functionality, alas str.endswith),
> > This is one of those famous 3-line functions, though:
> >
> > import fnmatch
> > def multifilter(names, *patterns):
> > result = []
> > for p in patterns:
> > result.extend(fnmatch.filter(names, p))
> > return result
> >
> > It's a 3-line function in 5 lines, OK, but still.
> And like many "hey it's this easy" demonstrations, that isn't quite
> identical, as a single file can match multiple patterns
Sure. I would have written it with set.union() on general principles
except I forgot how to say "union", didn't feel like looking it up,
and wanted to keep the def as close to 3 lines as I could without
being obfuscated (see below). I wonder how many people would fall
into the trap I did. (I don't consider myself a great programmer, but
maybe that's all the more reason for this? Not-so-great minds think
alike? :-)
I was really more interested in the second question, though. Why
invent yet another interface when we already have one that is
well-known and more powerful?
P.S. I can't resist. This is horrible, but:
def multifilter(names, *patterns):
return list(set().union(*[fnmatch.filter(names, p) for p in patterns]))
Who even needs a function? ;-)
_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/