4 ms·
Yeah. `join` has forever been backwards to me in Python and I still sometimes get it wrong the first time out. Comprehensions, though -- they are perfection. :
by davepeck 2y ago
Yeah. `join` has forever been backwards to me in Python and I still sometimes get it wrong the first time out.
Comprehensions, though -- they are perfection. :-)
- pansa2 2y agoIMO comprehensions like `[x**2 for x in range(4)]` would be better written as `[for x in range(4): x**2]`. That would make the mapping between a comprehension and the equivalent loop much clearer, especially once you use nested loops and/or conditionals. For example, to flatten a list of lists `l = [[1, 2], [3], [4, 5, 6]]`: [item for sublist in l for item in sublist] vs [for sublist in l: for item in sublist: item]
- Hackbraten 2y agoThat would make dict comprehensions confusing due to two occurrences of colons with different semantics.
- pansa2 2y agoAh, yes - good point!
- zahlman 1y agoI think it's very deliberate that these sorts of expressions are inside-out from the corresponding statements. It mixes and matches modes of thinking in my mind - the same kind of mistake as command-query separation violations. When I read a list comprehension, I can read it left to right: "A list (`[`) of each `item` that I get, if I look `for` each `sublist` that is `in l`, then `for` each `item` which is `in` that `sublist`." And the entire description is - well - descriptive, not imperative. With the other order, I have to think in terms of explicitly following the steps, and then mentally translating the last `item` into an imperative "... and put it into the result list".