自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python之父:為什么Python數(shù)組下標(biāo)從0開(kāi)始

開(kāi)發(fā) 后端 前端
曾經(jīng)有人在Twitter上問(wèn)我為什么Python使用以0為首位的數(shù)組索引法(0-based),并且還給我了一個(gè)相關(guān)優(yōu)秀文章的鏈接。這讓我想起許多往事:Python的前身之一,ABC語(yǔ)言使用的是以1為首位的數(shù)組索引方式(1-based),而對(duì)Python有著巨大影響的C語(yǔ)言則使用的是0-based。

曾經(jīng)有人在Twitter上問(wèn)我為什么Python使用以0為首位的數(shù)組索引法(0-based),并且還給我了一個(gè)相關(guān)優(yōu)秀文章的鏈接。這讓我想起許多往事:Python的前身之一,ABC語(yǔ)言使用的是以1為首位的數(shù)組索引方式(1-based),而對(duì)Python有著巨大影響的C語(yǔ)言則使用的是0-based。我早期開(kāi)發(fā)的程序語(yǔ)言(Algol、Fortran、Pascal)有的使用1-based,有的則比較靈活。我認(rèn)為切片語(yǔ)法是我做出這個(gè)決定的原因之一。

我們先來(lái)看看切片語(yǔ)法的使用吧。它最常見(jiàn)的使用應(yīng)該是“切出數(shù)組的前n位”和“切出數(shù)組第i位后的 n位”(前者是后者在i==起始位下的特例)。如果我們不需要使用難看的+1或-1補(bǔ)償方式,那么代碼就會(huì)美觀(guān)許多。

通過(guò)使用0-based索引法,Python的半開(kāi)區(qū)間以及缺省匹配區(qū)間都很美觀(guān),如:a[:n] 和a[i:i+n];前者是a[0:n]的省略寫(xiě)法。

在1-based索引法下,如果你想用a[:n]來(lái)表示切出前n個(gè)元素的話(huà),你只能選擇在切片語(yǔ)法中使用切片起始位和切片長(zhǎng)度2個(gè)參數(shù),或者閉區(qū)間的用法。使用1-based索引法,半開(kāi)區(qū)間切片語(yǔ)法就顯得不夠美觀(guān)。同樣地,使用閉區(qū)間切片語(yǔ)法的話(huà),你只能用a[i:i+n-1]來(lái)表示從第i位取n個(gè)元素。所以如果使用1-based索引法的話(huà),使用切片長(zhǎng)度更合適。你可以寫(xiě)成a[i:n]。事實(shí)上,ABC語(yǔ)言就是這樣的——它用了一種特殊的用法,寫(xiě)為a@i|n。(參考http://homepages.cwi.nl/~steven/abc/qr.html#EXPRESSIONS)

但是index:length的用法適合其它情況嗎?老實(shí)說(shuō),我不太記得了,但我想我當(dāng)時(shí)的確很喜歡它美觀(guān)的半開(kāi)區(qū)間語(yǔ)法。特別是兩個(gè)切片操作位置相鄰并且***個(gè)切片操作的終點(diǎn)索引就是第二個(gè)切片的起點(diǎn)索引的時(shí)候,它的寫(xiě)法實(shí)在是太漂亮了。比如,你想以i , j兩點(diǎn)來(lái)切分一個(gè)數(shù)組的話(huà),它們將會(huì)是a[:i]、a[i:j]、和 a[j:]。

這就是Python 使用0-based索引法的原因。

原文鏈接: Guido van Rossum   翻譯: 伯樂(lè)在線(xiàn) - colleen__chen
譯文鏈接: http://blog.jobbole.com/58018/

責(zé)任編輯:林師授 來(lái)源: 伯樂(lè)在線(xiàn)
相關(guān)推薦

2021-07-09 06:48:29

數(shù)組存儲(chǔ)內(nèi)存

2020-09-21 06:10:47

Python lambda匿名函數(shù)

2022-05-24 08:31:05

C語(yǔ)言檢查數(shù)組

2023-11-04 16:26:18

C語(yǔ)言數(shù)組

2020-12-14 08:00:31

計(jì)算機(jī)計(jì)數(shù)程序

2012-12-10 10:16:07

2023-05-09 07:16:06

2020-09-30 08:32:40

Python

2015-08-21 10:14:17

Python 之父Python

2015-08-20 10:05:15

Python

2015-05-29 11:14:31

程序員開(kāi)始看書(shū)

2016-05-18 10:15:25

PythonNode.js

2023-03-29 08:52:58

視覺(jué)Vue組件庫(kù)

2022-11-26 00:34:57

數(shù)組Java程序

2019-07-24 13:42:34

Python編程語(yǔ)言代碼

2022-08-31 14:24:03

數(shù)字化轉(zhuǎn)型小程序平臺(tái)

2024-02-06 09:55:33

框架代碼

2023-12-25 07:58:46

Python開(kāi)發(fā).NET

2024-06-07 09:13:23

2018-08-16 08:03:21

Python語(yǔ)言解釋器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)