Lista de comprensiones en Python con estado mutable entre iteraciones
Tengo algo que es muy parecido a la comprensión de una lista en Python, excepto que comparte un estado mutable entre iteraciones. ¿Hay alguna manera de hacerlo con una lista de comprensión?
def f(x):
""" 5-bit LFSR """
return (x >> 1) ^ (0x12*(x&1))
def batch(f, x, n):
result = [x]
for _ in xrange(1,n):
x = f(x)
result.append(x)
return result
batch(f, 1, 5)
que vuelve[1, 18, 9, 22, 11]
. Aquí lo importante es elbatch
función, nof(x)
que es solo un ejemplo simple para ilustrar el problema.
Alternativamente, podría implementar usando un generador:
def batch(f, x, n):
yield x
for _ in xrange(1,n):
x = f(x)
yield x
list(batch(f, 1, 5))
Pero huele un poco incómodo. Lo que estoy buscando es algo como esto ...
batch = [??? for _ in xrange(n)]