words = ['ACGT', 'TCGA']

def make_iterator():
    for i in range(len(words[0])):

        def inner(i=i):
            return (word[i] for word in words)
yield inner()
generators = list(make_iterator())
for gen in generators:
    pass
Generator not closing over data as expected