Tim Peters <tim.one@comcast.net> writes: > [Greg Ward] >> Hmmm, a random idea: has filter() ever been used for anything else? >> I didn't think so. So why not remove everything *except* that handy >> special-case: ie. in 3.0, filter(seq) == filter(None, seq) today, and >> that's *all* filter() does. >> >> Just a random thought... > > It's been used for lots of other stuff, but I'm not sure if any other use > wouldn't read better as a listcomp. For example, from spambayes: > > def textparts(msg): > """Return a set of all msg parts with content maintype 'text'.""" > return Set(filter(lambda part: part.get_content_maintype() == 'text', > msg.walk())) > > I think that reads better as: > > return Set([part for part in msg.walk() > if part.get_content_maintype() == 'text']) IMO this one's much nicer than either of those: return Set( filter_(msg.walk(), _1.get_content_maintype() == 'text') ) with filter_ = lambda x,y: filter y,x and _N for N in 0..9 left as an exercise to the reader. It helps my brain a lot to be able to write the sequence before the filtering function, and for the kind of simple lambdas that Python is restricted to, having to name the arguments is just syntactic deadweight. python = best_language([pound for pound in the_world]) but-list-comprehensions-always-read-like-strange-english-to-me-ly y'rs, -- Dave Abrahams Boost Consulting www.boost-consulting.com
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4