Hacker News new | ask | show | jobs
by jaseemabid 3989 days ago
Every time I see this pattern, a part of me dies inside.

    collection = []
    for i in data:
        collection.append(fn(i))
Why not just

    [fn(i) for i in data] ?
3 comments

You are right, list comprehension are cool and I often use them.

However, in this particular case, IMO, it would make things worse because I would have to write a multi-line list comprehension. Multi-line list comprehensions have bad readability. The object literal is too big to be included in list comprehension.

I could move commit->object conversion to a function, but then I would have used map. And it would have created one more indirection.

The current state is my deliberate choice.

If we are nitpicking then why not

    map(fn, data)

?
List comprehensions are more direct, support more than just a function call, and in py3 map returns an iterable instead of a list (granted, easily solvable by list(map()) but it's an extra concern)

List comprehensions are the very recommended strategy for constructing python lists, not to mention they're simply a fantastic language feature. Very direct, readable, and hard to get wrong.

Python loses out a lot on it's functional sorts of functions (filter, map) because you can't use method chaining on a list for them, imo

First example is way, WAY, more readable. Honestly, if I didn't read the first one I would probably not have figured out what the other one does without research.