snacktime wrote:
I need to convert a generator expression to a list expression so it
will work under python 2.3.

I rewrote this:

for c in range(128):
  even_odd = (sum(bool(c & 1<<b) for b in range(8))) & 1

As this:

for c in range(128):
  bo = [bool(c & 1<<b) for b in range(8)]
  even_odd = sum(bo) & 1


Seems to work, is there a better way to do this?

If you want to keep it as a generator that doesn't build a list in memory, you can use itertools:

import itertools

for c in range(128):
    def _even_odd_func(b): return bool(c & 1<<b)
    even_odd = (sum(itertools.imap(_even_odd_func, xrange(8)))) & 1

The fact that you used range() instead of xrange() indicates that
you may not care about this, though. ;-)
--
Michael Hoffman
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to