3 ms·
Python's lambda sucks, but that does not necessarily mean map/filter sucks with it too. Of course there are cases where list comprehensions are more convenient
by riobard 17y ago
Python's lambda sucks, but that does not necessarily mean map/filter sucks with it too. Of course there are cases where list comprehensions are more convenient and more powerful (esp. if they are more like their "real" counterparts in Haskell and friends). But in cases when map/filter are more convenient, I like the option of using them.
- frig 17y agoI'm partially defending list comprehensions here and partially challenging you to consider the possibility that there are higher levels of abstraction out there than those employed by functional programming primitives like map and filter. Level 0: for-loops with an explicit accumulator Level 1: map + filter (!) Level 2: ??? arguably an atemporal set-theoretic approach In practice in python list comprehensions are a superior syntax for computing with multiple source collections. (!) Really all you need is reduce map = lambda f,l: reduce(lambda h,t: h + f(t), l, []) filter = lambda f,l: reduce(lambda h,t: h + t if f(t) else h, l, []) You'd be silly to implement them that way of course but know your tools.
- riobard 17y ago[NOTE: copied from another branch for easy reading for others] A saner map/filter/product version: map(lambda (w,s,l): {'widget': w, 'sprocket': s, 'location': l} filter(lambda (w,s,l): l.hasInStock(w) and l.hasInStock(s) and w.isUsableWith(s), product(widgets, sprockets, locations)))