2012-11-26 42 views
11

可能重複:
Convert an integer to binary without using the built-in bin function如何十進制轉換爲二進制名單蟒蛇

我怎麼轉換成十進制數轉換成二進制列表。

例如,我怎麼改8成[1,0,0,0]

+1

我嘗試這樣做: 二進制= 0 而NUM = 0: 位= NUM​​%2 二進制=位+(10 *二進制) NUM = NUM​​/2 二進制= [二進制] 返回二進制 但它不給我逗號之間的數字,它並不總是添加零。 – booboboobobob

+0

你有什麼嘗試?你可能想看看Python函數'bin'。 – Yuushi

+0

我想做沒有這個功能,如果我可以 – booboboobobob

回答

16

你也許可以使用內置bin功能:

bin(8) #'0b1000' 

以獲取列表:

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

雖然看起來好像還有更好的辦法......

+1

依賴於字符串表示細節,並從一個整數到一個字符串,然後到一個列表似乎....次優。 – slacy

2

在你的精神裏R論着嘗試:

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

對於'.append()'位,然後'.reverse()'列表最後會更好,而不是在列表的開頭插入''。 – Tim

7

試試這個:

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

編輯 - 哎呀,你想要的整數:

>>> [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