Dan Sommers wrote: >> Seems to work, is there a better way to do this? > > for c in range( 128 ): > even_odd = 0 > print '%3d' % c, > while c: > c &= c - 1 > even_odd = not even_odd > print int( even_odd ) > > Okay, so your inner loop is only counting to 8, but IMO this is a good > example of how to use a better algorithm instead of optimizing the code > of a naïve one. My inner loop only iterates over 1-bits. >
Here's yet another way to achieve the same results. This version doesn't iterate over any bits at all: >>> import operator >>> parity = [ False ] >>> for i in range(7): parity += map(operator.not_, parity) And if you want the same output: >>> for even_odd in parity: print int(even_odd) -- http://mail.python.org/mailman/listinfo/python-list