Home

Yield and generators

import time

start = time.time()
def even_numbers(n):
    for i in range(0, n+1, 2):
        yield i

numbers = even_numbers(10_000_000)
evens = []
for number in numbers:  
    evens.append(number)
end = time.time()
print(end-start)



start2 = time.time()
evens2 =[]
for n in range(10_000_000):
    if n%2 ==0:
        evens2.append(n)

end2 = time.time()
print(end2-start2)


# 0.8700542449951172
# 1.6380994319915771

Efficiency Analysis

Reasons for Efficiency Difference

Iteration Range:

Number of Operations:

Most efficient method

start3 = time.time()
evens3 = list(range(0, 10_000_000, 2))
end3 = time.time()
print(end3-start3)

# 0.2165060043334961
Tags: Python, Yield, Generators, Data_structures_in_action