Iterators and Generators: Conceptual

What would python display?

(Draw out environment diagram as well)

>>> lstA = [7, 8, 3]
>>> lstB = [1, 2, 4, 6, 7, 8]
>>> iterA = iter(lstA)
>>> iterB = iter(lstB)
>>> next(lstA)
______
>>> next(iterA)
______
>>> next(iterB)
______
>>> lstA = lstA + [1, 2, 5]
>>> list(iterA)
______
>>> lstB.append(3)
>>>list(iterB)
______

COde writing

Fill in the even_iter class, which iterates through a list of numbers and gives only the even numbers.
class even_iter:
>>> lst = [1, 3, 6, 7, 8, 4, 9]
>>> lit = even_iter(lst)
>>> next(lit)
6
>>> next(lit)
8
>>> next(lit)
4
def __init__(self, lst):
    self.lst = ______
    ______
def __iter__(self):
    return ______
def __next__(self):
    if ______:
        raise ______
    while ______:
        ______ += 1
    elem = ______
    ______ += 1
    return elem

Write out a function that generates all factorials up to n.
def gen_factorial(n):
>> gen = gen_factorial(4)
>>> list(gen)
[1, 2, 6, 24]
    count, fact = ______
    while ______:
        fact = ______
        yield ______
        ______

Write out a function that generates the hailstone sequence. (In case you don’t remember what that is: if n is even, divide n by 2, if n is odd, multiply by 3 and add 1 until n reaches 1)
def hailstone_gen(n):
>> gen = hailstone_gen(6)
>>> list(gen)
[6, 3, 10, 5, 16, 4, 2, 1]
    while ______:
        yield ______
        if ______:
            ______
        else:
            ______
    yield ______