6 ms·
Agreed. The real title should be "Refactor loops with map, filter, and reduce"
by zenogais 11y ago
Agreed. The real title should be "Refactor loops with map, filter, and reduce"
- nilliams 11y agoThere are languages that have map, filter and reduce as built-ins but aren't very accommodating of -- or discourage 'fluid interfaces' that allow the piping style in his examples. E.g. in python, you can't really 'pipe' to compose its filter and map built-ins, you have to do: map(lambda x: x * 2, filter(lambda x: x % 2 != 0, [1, 2, 3])) (Or use list comprehensions which also are not pipe-like). He's also specifically talking about 'collections' as in 'lists of dicts' in Python parlance, or 'arrays of objects' in other languages. The idea that you pass this 'collection' through a 'pipe' of operations is pretty powerful and obviously maps naturally to query-like behaviour. So to give Python back some dues, the place where you do of course see some 'collection piping' is when using the Django ORM. So yeah it may sound a bit grandiose but I think he's highlighting those terms on purpose because it is about more than just map, filter and reduce.
- mdpopescu 11y agoThanks for this; I am starting Python coming from C# and I kept looking for LINQ equivalents. Apparently I can stop looking, it was driving me nuts :)
- deleted 11y ago[deleted]
- ackalker 11y agoHow about this one? mcoll - Modern API for python collections: https://github.com/nvbn/mcoll https://github.com/nvbn/mcoll
- nilliams 11y agoThat looks pretty neat, thanks! I'd only previously come across underscore.py [0] (python port of underscore.js) which looked a little unmaintained though perhaps because it's 'done'. [0] https://github.com/serkanyersen/underscore.py https://github.com/serkanyersen/underscore.py
- shill 11y agoIt's not using pipes, but you can refactor the example with this Python list comprehension. def filter_authors(authors, company): return [author['twitter_handle'] for author in authors if author['company'] == company and author['twitter_handle']] EDIT: HN code formatting seems to be broken so you may need to scroll right to see the entire comprehension. You can do other SQL-like operations with list comprehensions too. http://code.activestate.com/recipes/159974-sql-like-set-operations-with-list-comprehension-on/ http://code.activestate.com/recipes/159974-sql-like-set-oper...