It seems you need an n-dimensional Cartesian product [False, True] .
>>> print list(itertools.product(*(itertools.repeat((False, True), 3)))) [(False, False, False), (False, False, True), (False, True, False), (False, True, True), (True, False, False), (True, False, True), (True, True, False), (True, True, True)]
Or more briefly (the theft from Frederick )
>>> print list(itertools.product((False, True), repeat=3)) [(False, False, False), (False, False, True), (False, True, False), (False, True, True), (True, False, False), (True, False, True), (True, True, False), (True, True, True)]