def gensquares(N):
for i in range(N):
yield i**2
for x in gensquares(10):
print(x)
0 1 4 9 16 25 36 49 64 81
Create a generator that yields "n" random numbers between a low and high number (that are inputs).
Note: Use the random library. For example:
import random
random.randint(1,10)
3
def rand_num(low,high,n):
for i in range(n):
yield random.randint(low, high)
for num in rand_num(1,10,12):
print(num)
3 9 6 10 8 4 5 5 5 3 5 8
Use the iter() function to convert the string below into an iterator:
s = 'hello'
s = iter(s)
print(next(s))
h
Explain a use case for a generator using a yield statement where you would not want to use a normal function with a return statement.
If the output has the potential of taking up a large amount of memory and you only intend to iterate through it, you would want to use a generator. (Multiple answers are acceptable here!)
Can you explain what gencomp is in the code below? (Note: We never covered this in lecture!)
my_list = [1,2,3,4,5]
gencomp = (item for item in my_list if item > 3)
for item in gencomp:
print(item)
4 5
Hint: Google generator comprehension!