為什麼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.

但是,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的索引方式的原因。

阿卡索免責為什麼便宜,阿卡索為什麼便宜網阿卡索

師資。阿卡索的 便宜是因為師資的原因導致的。阿卡索的外教多數來自菲律賓,少數來自歐美。如果選用的是菲律賓外教費用就會比較低。阿卡索為什麼便宜網阿卡索 阿卡索的 便宜是因為師資的原因。阿卡索的外教多數來自菲律賓,少數來自歐美。如果選用的是菲律賓外教費用就會比較低。可能菲律賓外教的傭資可能相比於歐美要偏...

「索」的部首是什麼?索的部首叫什麼

糸su 關於索的詞語有 一索得男 興致索然。興味索然 悉索敝賦。探賾索隱 索然無味。搜尋枯腸 敲詐勒索。披毛索靨 冥思苦索。冥行盲索 離群索居。枯魚銜索 鉤深索隱。倒裳索領 大寒索裘。不假思索 暗中摸索。按圖索驥 披毛索黶。索 su 大繩子或大鏈子 索子。索道。鋼索。絞索。線索。搜尋,尋求 索引。思...

英雄聯盟中為什麼很多人稱亞索是托兒索?

英雄聯盟是一款十分受歡迎的團隊競技遊戲,在這款遊戲中對於玩家之間的配合以及英雄之間的選擇都十分的看重,有些英雄本身十分的強勢,但是在一些普通玩家手中,卻沒有辦法發揮出最大的作用,其中亞索就是乙個十分強勢的英雄,不僅傷害高,而且控制也十分的強勢,但是有很多玩家將亞索這個英雄的作用不能發揮出來,所以亞索...