It is not much easier to understand the explicit loop:<p><pre><code>  doubled_odds = []
  for n in numbers:
       if n % 2 == 1:
           doubled_odds.append(n * 2)
</code></pre>
compared to the list comprehension:<p><pre><code>  doubled_odds = [n * 2 for n in numbers if n % 2 == 1]
</code></pre>
Here&#x27;s the explicit loop without newlines for comparison:<p><pre><code>  for n in numbers: if n % 2 == 1: doubled_odds.append(n * 2)
</code></pre>
Notice that the for-loop and the if-statement are in the same order in the loop and in the list comprehension. Only the value expression (n * 2) is out-of-order. OPs jumping around is often unnecessary in the gif.<p>The one line list comprehension is as much readable for people familiar with Python as the variant with the explicit loop.<p>It is not uncommon to use several list comprehensions in a function. If you rewrite them as explicit loops then it may increase the line count 4 times e.g., it can convert a simple 3-lines function that could be understood at a glance into 12 lines function that you have to read line by line to understand -- it is easy to keep track of 3 values on 3 lines but it is not clear whether it is true for 12 lines.