You can always benefit from using bitwise operations, which works with a standard integer object. Simply shift your number one bit at time and collect the right-most bit value. For instance:
>>> byte = 0xFC
>>> list_size = 8
>>> [(byte >> i) & 1 for i in range(list_size)][::-1] # reverse this array, since left-most bits are evaluated first.
[1, 1, 1, 1, 1, 1, 0, 0]
Timing using IPython: 1000000 loops, best of 3: 1.54 µs per loop
It's even possible to generate this list without reversing the array:
>>> byte = 0xFC
>>> list_size = 8
>>> [(byte & (1 << (list_size - 1 - k))) >> (list_size - 1 - k) for k in range(list_size)]
[1, 1, 1, 1, 1, 1, 0, 0]
Timing using IPython: 100000 loops, best of 3: 2.3 µs per loop
. Apparently, it's faster to reverse a list than to use two shifts!
Also, this Stack Overflow thread contains a pretty similar question.