為什麼Python list的索引從0開始

時間 2021-07-21 03:43:39

1樓:匿名使用者

python的創始人(guido van rossum)說過,python使用0-based索引方式的原因之一是python的切片(slice)語法。

先看看切片的用法。可能最常見的用法就是“從陣列中切出前n位”或“從數值這第i位起切出n位”(前一種實際上是i==起始位的特殊用法)。如果使用這種語法時不需要表達成難看的+1或-1補充方式,那將是非常的優雅。

使用0-based的索引方式,python的半開區間切片和預設匹配區間切片語法變得非常漂亮: a[:n] 和 a[i:i+n],前者的標準寫法就是a[0:n]。

如果是1-base的索引方式,那麼,想讓a[:n]表達成“取前n個元素”,(這是不行的),要麼使用一個閉合區間切片語法,要麼在切片語法中使用切片起始位和切片長度2個引數的形式。使用1-based索引方式,半開區間切片語法變得不優雅。

這種方式下使用閉合區間切片語法,為了表達從第i位取n個元素時必須寫出a[i:i+n-1]。這樣看來,如果使用1-based的索引,使用切片起始位+長度的形式更合適。

這樣可以寫成a[i:n]。事實上abc語言就是這樣做的——它使用了一個獨特的表達方式,寫成a@i|n。

(注:abc語言是python的祖先之一)

guido van rossum說想其是被半開區間語法的優雅迷住了。特別是當兩個切片操作位置鄰接時,第一個切片操作的終點索引值是第二個切片的起點索引值時,太漂亮了,無法捨棄。例如,想將一個陣列以i,j兩個點切成三部分——這三部分將

會是a[:i],a[i:j]和a[:i]。

這就是為什麼python的創始人要讓python使用0-based的索引方式的原因。

python語言的創始人解釋為什麼python陣列的索引從0開始

2樓:匿名使用者

你好:為什麼從0開始;

貌似所有的陣列索引都是從0開始!

3樓:日time寸

引用python語言的創始人的解釋

最近有人在twitter是問我為什麼python使用以0為第一位的陣列索引方式(以下簡稱0-based),並讓我看一篇關於這個主題的文章(很

有趣)。這引起了我不少的回憶。abc語言——python的祖先之一,使用的是以1為第一位的索引方式(以下簡稱1-based),而c語言——另一種

對python有影響巨大的語言,使用0-based方式。我最早學習的幾種語言(algol, fortran,

pascal),有的是1-based的,有的是不固定的。我認為,之所以讓我決定讓python使用0-based索引方式的原因之一是python的

切片(slice)語法。

讓我們來先看看切片的用法。可能最常見的用法就是“從陣列中切出前n位”或“從數值這第i位起切出n位”(前一種實際上是i==起始位的特殊用法)。如果使用這種語法時不需要表達成難看的+1或-1補充方式,那將是非常的優雅。

使用0-based的索引方式,python的半開區間切片和預設匹配區間切片語法變得非常漂亮: a[:n] 和 a[i:i+n],前者的標準寫法就是a[0:n]。

如果是1-base的索引方式,那麼,想讓a[:n]表達成“取前n個元素”,(這是不行的),你要麼使用一個閉合區間切片語法,要麼在切片語法中使用切片起始位和切片長度2個引數的形式。使用1-based索引方式,半開區間切片語法變得不優雅。

這種方式下使用閉合區間切片語法,為了表達從第i位取n個元素時你必須寫出a[i:i+n-1]。這樣看來,如果使用1-based的索引,使用切片起始位+長度的形式更合適。

這樣你可以寫成a[i:n]。事實上abc語言就是這樣做的——它使用了一個獨特的表達方式,寫成a@i|n。

(參看http://homepages.cwi.

nl/~steven/abc/qr.html#expressions。

但是,index:length這種方式在其它情況下適用嗎?說實話,這點我有些記不清了,但我想我是被半開區間語法的優雅迷住了。特別是當兩個切

片操作位置鄰接時,第一個切片操作的終點索引值是第二個切片的起點索引值時,太漂亮了,無法捨棄。例如,你想將一個陣列以i,j兩個點切成三部分——這三

部分將會是a[:i],a[i:j]和a[j:]。

這就是為什麼我要讓python使用0-based的索引方式的原因。

python怎麼設定list的下標從1開始

4樓:暢天宇

因為在執行python指令碼的時候你沒在後面新增一個值。sys.argv[1]意思是取位置第二的引數。

位置第一的是py名字,第二的引數你沒有輸入,所以取不到,所以報錯out of range。

你執行的時候一般是這樣的:python ***.py a 其中***是程式名字,即sys.

argv[0]的位置。a是引數,即sys.argv[1]取的位置。

必須有這個a才行,要不然sys.argv[1]取不到值肯定報錯

5樓:吹花

設計一種自定義型別,把list重新封裝一層。在實現上保證初始化時原生list裡自動新增一個元素。再把其它相關的東西都加上,比如獲取列表長度等。這樣就可以實現該需求。

然而,出於標準化考慮,建議你適應列表、陣列這種索引從0開始的資料結構。畢竟大家大多數語言都是這樣預設的,除了vb6等語言有小標為1的奇怪設定。

程式設計常識13:陣列索引陣列下標為什麼要從0開始

6樓:追憶小土豆

為了更好理解,我們舉個例子:

1、陣列在記憶體中申請是,所申請的記憶體是一段連續的記憶體地址;

python 請問如何給索引從200開始的series重新設立索引,使其從0開始?

7樓:匿名使用者

python的創始人(guido van rossum)說過,python使用0-based索引方式的原因之一是python的切片(slice)語法。

先看看切片的用法。可能最常見的用法就是“從陣列中切出前n位”或“從數值這第i位起切出n位”(前一種實際上是i==起始位的特殊用法)。如果使用這種語法時不需要表達成難看的+1或-1補充方式,那將是非常的優雅。

使用0-based的索引方式,python的半開區間切片和預設匹配區間切片語法變得非常漂亮: a[:n] 和 a[i:i+n],前者的標準寫法就是a[0:n]。

如果是1-base的索引方式,那麼,想讓a[:n]表達成“取前n個元素”,(這是不行的),要麼使用一個閉合區間切片語法,要麼在切片語法中使用切片起始位和切片長度2個引數的形式。使用1-based索引方式,半開區間切片語法變得不優雅。

這種方式下使用閉合區間切片語法,為了表達從第i位取n個元素時必須寫出a[i:i+n-1]。這樣看來,如果使用1-based的索引,使用切片起始位+長度的形式更合適。

這樣可以寫成a[i:n]。事實上abc語言就是這樣做的——它使用了一個獨特的表達方式,寫成a@i|n。

(注:abc語言是python的祖先之一)

guido van rossum說想其是被半開區間語法的優雅迷住了。特別是當兩個切片操作位置鄰接時,第一個切片操作的終點索引值是第二個切片的起點索引值時,太漂亮了,無法捨棄。例如,想將一個陣列以i,j兩個點切成三部分——這三部分將

會是a[:i],a[i:j]和a[:i]。

這就是為什麼python的創始人要讓python使用0-based的索引方式的原因。

索愛哪款手機最經典,為什麼 索愛哪款手機音質最好啊

索愛 手機的旗艦產品是w908c,w系列是索愛的 品牌。另外k系列是拍照,絕對不是其他品牌 手機能比得了的,行貨2500左右,水貨1900左右,200w畫素,沒有閃光燈,這一點也可能是不想和k系列衝突,多 非常好,遊戲也沒話說,有款賽車遊戲,你只要左右搖擺機器就可以玩,待機3天左右。最新索愛出的w系...

樸索的反義詞是什麼,樸索的近義詞是什麼

樸索的反義詞是 華麗。樸索讀音 pi o su 注音 基本解釋 質樸無華。明 姚士粦 見只編 卷中 余於 萬曆 戊申八月見 董 父子於天機精舍,其貌皆農野,而言語真樸索。樸索的近義詞是什麼 樸索 素 的近義詞 儉約 簡樸 節儉 節約 儉省 儉樸樸素 拼音 p s 釋義 1 形 顏色 式樣等 不濃豔 ...

海賊王中的索隆為什麼不吃惡魔果實

該說的還是得說 拜託啊!跟鷹眼打的時候的索隆基本是廢人一個啊!現在的索隆怎樣啊?切火車如切菜,砍大樓像砍瓜!火車是鐵,樓是石頭。比木頭做的船硬上n倍!雖然現在索隆還打不過鷹眼,但最後一定行的!因為鷹眼就是索隆最終形態的參考樣本! 癢啊癢啊癢啊 額 吃兩個果實就自爆了 索隆為什麼要吃果實呢?他本身就很...