2D-список попался ... но здесь все в порядке, потому что повторные ссылки игнорируются ... Я думаю, это просто прекрасно.
я есть что-то, что очень похоже на понимание списка в Python, за исключением того, что оно разделяет изменяемое состояние между итерациями. Есть ли способ сделать это с пониманием списка?
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)
который возвращается[1, 18, 9, 22, 11]
, Здесь важно то, чтоbatch
функция, а неf(x)
который здесь просто простой пример, чтобы проиллюстрировать проблему.
В качестве альтернативы я мог бы реализовать с помощью генератора:
def batch(f, x, n):
yield x
for _ in xrange(1,n):
x = f(x)
yield x
list(batch(f, 1, 5))
Но пахнет немного неловко. Я ищу что-то вроде этого ...
batch = [??? for _ in xrange(n)]