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

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

Python中的整數(shù)運(yùn)算是如何實(shí)現(xiàn)的?

Python中的整數(shù)運(yùn)算是如何實(shí)現(xiàn)的?

肥皂起泡泡 2023-09-05 20:55:17
這可能是一個(gè)非常廣泛的問(wèn)題。我想創(chuàng)建一種表示字符串的方法,該方法支持 O(1) 追加、O(1) 向左追加和 O(1) 比較,同時(shí)保持 O(N) 切片和 O(1) 索引。我的想法是,我將 unicode 字符存儲(chǔ)為其 unicode 編號(hào),并使用數(shù)學(xué)運(yùn)算從兩端添加和刪除字符。我將其命名為“NumString”:class Numstring:    def __init__(self, init_str=""):        self.num = 0        self.length = 0        for char in init_str:            self.append(char)    def toString(self, curr=None):        if curr is None:            curr = self.num        retlst = []        while curr:            char = chr(curr % 10000)            retlst.append(char)            curr = curr // 10000        return "".join(retlst)    def appendleft(self, char):        assert len(char) == 1        self.num *= 10000        self.num += ord(char)        self.length += 1    def append(self, char):        self.num += ord(char)*(10000**self.length)        self.length += 1        def pop(self):        # self.num = self.num % (10000**self.length-1)        self.num = self.num % 10000**(self.length-1)        self.length -= 1    def popleft(self):        self.num = self.num // 10000        self.length -= 1    def compare(self, numstring2):        return self.num == numstring2.num    def size(self):        return self.length    def get(self, start, end=None):        if start >= self.length:            raise IndexError("index out of bounds")        if end and end > self.length + 1:            raise IndexError("index out of bounds")        if end is not None:            if start == end:                return ""            curr = self.num            curr = curr // (10000 ** start)            curr = curr % 10000**(end)            return self.toString(curr)        else:            curr = self.num            curr = curr // (10000 ** start)            char = chr(curr % 10000)            return char
查看完整描述

1 回答

?
慕桂英546537

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

ints 本質(zhì)上表示為數(shù)字字符串(基數(shù)高于 10),對(duì)它們進(jìn)行的大多數(shù)操作(包括加法和乘法)所花費(fèi)的時(shí)間與它們包含的數(shù)字?jǐn)?shù)量成正比,甚至更糟。由于您使用的基數(shù) (10000) 與基數(shù)int的使用不匹配,因此乘以或除以基數(shù)等操作會(huì)變成復(fù)雜的操作,而不是簡(jiǎn)單地復(fù)制內(nèi)存字節(jié)。因此,它幾乎是對(duì)已經(jīng)執(zhí)行的操作字符串的效率較低的重新實(shí)現(xiàn)(這是您通過(guò)基準(zhǔn)測(cè)試發(fā)現(xiàn)的),并且它不支持所有 Unicode(最高可達(dá) 0x10FFFF,而不是 10000)。

不過(guò),提示實(shí)際上具有您正在尋找的屬性的數(shù)據(jù)結(jié)構(gòu):基于循環(huán)緩沖區(qū)的雙端隊(duì)列。


查看完整回答
反對(duì) 回復(fù) 2023-09-05
  • 1 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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