第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

對(duì)于二進(jìn)制分離,哪個(gè)更好:使用列表還是 divmod?

對(duì)于二進(jìn)制分離,哪個(gè)更好:使用列表還是 divmod?

尚方寶劍之說(shuō) 2021-08-14 21:35:25
我正在嘗試將二進(jìn)制字符串從末尾除以恒定長(zhǎng)度:例如,'1001011000'除以 3-> ['1','001','011','000']。從數(shù)字 600 開(kāi)始,def bin_divby(dec,leng):    n = 0    mid_res = ''    res=list()    for nums in bin(dec)[2:][::-1]:        n+=1        mid_res+=nums        if not n%leng:            res+=[mid_res[::-1]]            mid_res=''    if n%leng:        res+=[mid_res[::-1]]    return res[::-1](我不確定,但代碼有點(diǎn)像這樣)使用帶有少量變量的 for 循環(huán)會(huì)使其工作,但我很好奇使用 divmod 是否會(huì)使其更快。或者基礎(chǔ)轉(zhuǎn)換會(huì)更好嗎?我認(rèn)為使用二進(jìn)制形式比通過(guò) divmod 再次重新計(jì)算更有效,但正如您所見(jiàn),我也使用了很多變量和函數(shù)。對(duì)于重復(fù)數(shù)千次計(jì)算,哪個(gè)更好?
查看完整描述

1 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

我們可以為此使用列表理解:


def bin_divby(dec, leng):

    bn = bin(dec)[:1:-1]

    return [bn[i:i+leng][::-1] for i in range(0, len(bn), leng)][::-1]

我們可以通過(guò)反轉(zhuǎn)range(..)對(duì)象來(lái)稍微提高效率:


def bin_divby(dec, leng):

    bn = bin(dec)[:1:-1]

    n = len(bn) - 1

    return [bn[i:i+leng][::-1] for i in range(n - n%leng, -leng, -leng)]

所以這里我們首先反向獲取二進(jìn)制字符串,然后我們迭代該字符串,并且每次對(duì)字符串進(jìn)行切片。最終的結(jié)果是相反的。


這產(chǎn)生了預(yù)期的:


>>> bin_divby(0b1001011000, 1)

['1', '0', '0', '1', '0', '1', '1', '0', '0', '0']

>>> bin_divby(0b1001011000, 2)

['10', '01', '01', '10', '00']

>>> bin_divby(0b1001011000, 3)

['1', '001', '011', '000']

>>> bin_divby(0b1001011000, 4)

['10', '0101', '1000']

>>> bin_divby(0b1001011000, 5)

['10010', '11000']

>>> bin_divby(0b1001011000, 6)

['1001', '011000']

>>> bin_divby(0b1001011000, 7)

['100', '1011000']


查看完整回答
反對(duì) 回復(fù) 2021-08-14
  • 1 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)