When reading code I find <i>comprehensions</i> easier to comprehend than combinations of <i>map</i>, <i>filter</i> and <i>reduce</i>. That is considering that I played around with some Common-Lisp before getting into Python.<p>The parts in the comprehension<p><pre><code>    [*wanted* *iteration(s?)* *condition?*]
</code></pre>
compares well to<p><pre><code>    *iterations(s?)*
        *condition?*
            *append wanted*
</code></pre>
for normal looping behaviour without changing order of the iterations.<p>One of my favourite comprehensions is of the sort<p><pre><code>    [item for item in items in for i in (0, 1)]
</code></pre>
of course this can be the same as<p><pre><code>    list(items) * 2
</code></pre>
but the comprehension is more versatile<p><pre><code>    [item for item in items in for i in (0, 1) if items[0] != &#x27;a&#x27;]
</code></pre>
For most once the mental fog clears comprehensions become natural very quickly as they are not that far removed from normal loops.