Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Solving things with list comprehensions is very idiomatic in Python.

Also, not nesting things is very idiomatic Python ("Flat is better than nested" is part of the Zen).

So, people generally don't think of nested list comprehensions as idiomatic.



And `explicit is better than implicit` is idiomatic python, but the language uses the most implicit characters available on the average keyboard (` ` and ` `) to denote control flow.


The language uses indentation levels to denote control flow, and those are very explicit - much more so than braces in fact.


They're not though. They only exist as the relation between the edge and the start of content.

How many levels of indentation are there on each line?

https://i.imgur.com/s1WBHxU.png

Spoiler: Line 3 has no indentation while Line 6 has one level. Line 4 has a mix of tabs and spaces that would confuse Python.

The fact of the matter is that indentation is white space, and white space is implicit by definition. It only exists as the gap between other things.


Stop using a legacy version of Python.

You will get a "TabError: inconsistent use of tabs and spaces in indentation" exception if you use Python 3.


I haven't used python with inconsistent indentation recently, that's true.


In that sense control flow only exists as the relation between other things, so it makes sense for it to be denoted that way. If a line with no code on it is indented in the forest and nobody hears it, does the line execute?


I write my python interactively in a repl, and often end up with deeply nested list comprehensions as a result. I always need to break them up to have any chance of understanding it even a day later.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: