假設我有十進制數 8,我想將其轉換為長度為 8 的二進制串列。這意味著如果我輸入為 8,我應該得到輸出為 [0,0,0,0,1,0,0 ,0]。我正在尋找可以在很短的時間內(以納秒為單位)執行此操作的 python 中的內置命令。
我已經嘗試過給我錯誤的愚蠢命令:
[int(x) for x in list('{0:8b}'.format(8))]
我得到的錯誤是
ValueError: invalid literal for int() with base 10: ' '
uj5u.com熱心網友回復:
您可以使用串列理解。
>>> [int(i) for i in bin(8)[2:].zfill(8)]
[0, 0, 0, 0, 1, 0, 0, 0]
bin(8)回傳整數的二進制表示,8它總是以 . 為前綴0b。bin(8)[2:]洗掉前兩個字符(即,0b)也是如此。然后你可以用.zfill(8)左邊的零填充一個數字字串(具有給定的寬度8)
uj5u.com熱心網友回復:
您可以構建一個 f 字串,然后使用map()對其進行迭代,如下所示:
n = 8
lst = list(map(int, f'{n:08b}'))
print(lst)
輸出:
[0, 0, 0, 0, 1, 0, 0, 0]
uj5u.com熱心網友回復:
第一的:
[function(item) for item in list]
將遍歷 中的所有專案list,并回傳一個包含函式處理的所有專案的串列。
第二:
'[index]:[width][type]'.format(input)
'{0:8b}'.format(8)
表示將索引 0: 中的輸入轉換8為二進制字串1000,并填充空間直到寬度為8. 所以結果'{0:8b}'.format(8)是 1000。(請搜索.format()更多資訊)
所以它試圖做的是:
[int(x) for x in list(' 1000'.format(8))]
你得到的錯誤是因為你試圖將 space( ' ') 決議為 int。
您可以嘗試: 填充寬度0:
[int(x) for x in list('{0:08b}'.format(8))]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529401.html
