Is this what you are asking for? If by defined at runtime, you mean, without having to explicitly create a function that uses the yield keyword, then yes, you can use generator expressions.
>>> t = [1, 2, 3]
>>> (i*2 for i in t)
<generator object <genexpr> at 0x7f1f72dbfdc0>