Ответ 1

Возможно, вы можете использовать встроенную функцию bin:

bin(8) #'0b1000'

чтобы получить список:

[int(x) for x in bin(8)[2:]]

Хотя кажется, что, вероятно, лучший способ...

Ответ 2

Попробуйте следующее:

>>> list('{0:0b}'.format(8))
['1', '0', '0', '0']

Изменить - Ooops, вам нужны целые числа:

>>> [int(x) for x in list('{0:0b}'.format(8))]
[1, 0, 0, 0]

Другое редактирование -

версия mgilson немного быстрее:

$ python -m timeit "[int(x) for x in list('{0:0b}'.format(8))]"
100000 loops, best of 3: 5.37 usec per loop
$ python -m timeit "[int(x) for x in bin(8)[2:]]"
100000 loops, best of 3: 4.26 usec per loop

Ответ 3

В духе вашей первоначальной попытки:

binary = []
while num != 0:
    bit = num % 2
    binary.insert(0, bit)
    num = num / 2