M
Mayer
Hello:
I need some help in understanding generators. I get them to work in
simple cases, but the following example puzzles me. Consider the
non-generator, "ordinary" procedure:
def foo(n):
s = []
def foo(n):
if n == 0:
print s
else:
s.append(0)
foo(n - 1)
s.pop()
s.append(1)
foo(n - 1)
s.pop()
foo(n)
foo(n) prints all n-bit-wide binary numbers as a list. I would now like
to create a generator for such numbers:
def bin(n):
s = []
def bin(n):
if n == 0:
yield s
else:
s.append(0)
bin(n - 1)
s.pop()
s.append(1)
bin(n - 1)
s.pop()
return bin(n)
yet this doesn't work as expected. Can someone please explain why?
Thanks,
Mayer Goldberg
I need some help in understanding generators. I get them to work in
simple cases, but the following example puzzles me. Consider the
non-generator, "ordinary" procedure:
def foo(n):
s = []
def foo(n):
if n == 0:
print s
else:
s.append(0)
foo(n - 1)
s.pop()
s.append(1)
foo(n - 1)
s.pop()
foo(n)
foo(n) prints all n-bit-wide binary numbers as a list. I would now like
to create a generator for such numbers:
def bin(n):
s = []
def bin(n):
if n == 0:
yield s
else:
s.append(0)
bin(n - 1)
s.pop()
s.append(1)
bin(n - 1)
s.pop()
return bin(n)
yet this doesn't work as expected. Can someone please explain why?
Thanks,
Mayer Goldberg