I have something which is an awful lot like a list comprehension in Python, except that it shares mutable state between iterations. Is there any way to do it with a list comprehension?
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)
which returns [1, 18, 9, 22, 11]
. Here the important thing is the batch
function, not f(x)
which is here just a simple example to illustrate the issue.
Alternatively I could implement using a generator:
def batch(f, x, n):
yield x
for _ in xrange(1,n):
x = f(x)
yield x
list(batch(f, 1, 5))
But it smells a little awkward. What I'm looking for is something like this...
batch = [??? for _ in xrange(n)]