Home >Backend Development >Python Tutorial >Why Are List Comprehensions Faster Than List Appending in Python?
Why List Comprehensions Outperform List Appending
Despite the perception of list comprehensions as merely expressive sugar, they demonstrate a significant speed advantage over list appending. This disparity extends beyond expressive differences.
To illustrate, consider the following timeit benchmarks:
<code class="python">import timeit time = timeit.timeit('t=[]\nfor i in range(10000):\n t.append(i)', number=10000) time2 = timeit.timeit('t=[i for i in range(10000)]', number=10000)</code>
The results reveal that list comprehensions execute approximately 50% faster than appending to a list.
Reasons for Increased Speed
List comprehensions exploit several performance optimizations:
Examples
Consider the following code snippets:
<code class="python">def f1(): l = [] # Create a new list for i in range(5): # Iterate through a range l.append(i) # Append each number to the list def f2(): [i for i in range(5)] # Use list comprehension to create a new list</code>
Disassembling these functions with the dis module reveals the differences:
<code class="python">dis.dis(f1) dis.dis(f2)</code>
In f1, we observe the creation of a list and the loading and calling of the append attribute (offsets 18 and 20). In f2, however, these operations are absent, resulting in a more efficient code.
Conclusion
List comprehensions achieve improved performance by eliminating attribute loading, function calls, and the overhead associated with suspension and resumption of function frames. Consequently, they are often recommended for creating new lists where speed is a priority.
The above is the detailed content of Why Are List Comprehensions Faster Than List Appending in Python?. For more information, please follow other related articles on the PHP Chinese website!