python語(yǔ)言中長(zhǎng)度是從零開始嗎?
"取0為開始"是某種意義上的編程語(yǔ)言規(guī)范,雖然不遵守這個(gè)規(guī)范的更多,甚至可能最開始就是從1開始的數(shù)組,但是在現(xiàn)在的語(yǔ)境下,使用0作為數(shù)組開頭能夠節(jié)省很多新語(yǔ)言的理解成本.
懟法進(jìn)階: 計(jì)數(shù)從0開始,是程序員偷懶的設(shè)定之一
寫數(shù)組的時(shí)候,經(jīng)常會(huì)涉及溢出問題,大多數(shù)人是這么解決的:
數(shù)組a長(zhǎng)度n,每次操作取a[(count+1)%n]
發(fā)現(xiàn)沒,count%n,就是取余操作
余數(shù)如果從1開始算,我需要這么寫才能讓數(shù)組作取余, a[ count % n ], 但是a[n]=a[n%n]=a[0],那么我就需要針對(duì)a[n]作特殊處理,也就是寫一層 if, 就增加了代碼量
懟法高級(jí): 從操作系統(tǒng)原理來(lái)講,數(shù)組的本質(zhì)是一串連續(xù)的地址
數(shù)組中的a[n]所代表的數(shù)據(jù)的地址,其實(shí)是a的頭地址+n*(數(shù)組代表的數(shù)據(jù)類型所占用的空間),鑒于老程序員一般要學(xué)習(xí)操作系統(tǒng),要求了解系統(tǒng)底層,在系統(tǒng)層面上去理解代碼的話,數(shù)組從0開始明顯比從1開始更容易去理解.
現(xiàn)在的Python數(shù)組之所以支持多種數(shù)據(jù)類型,是因?yàn)镻ython數(shù)組有點(diǎn)類似編程中的"鏈表"技術(shù),就是"需要的時(shí)候隨機(jī)取走一塊空間,通過邏輯地址的方法去索引",而不是像數(shù)組一樣,直接從內(nèi)存取走一大塊固定的空間,通過物理的方法去索引修改.