當前位置:成語大全網 - 新華字典 - Python切片語法圖像記憶法

Python切片語法圖像記憶法

無論是字符串、列表還是元組,都被稱作序列,只要是序列就可以切片。而搞清楚序列的序號的定位方法,是壹個基本功。

在Python裏,序號有兩種表達方式,壹個是 正向角標序號 ,壹個是 反向倒數序號

我定義的這兩個名字,會更利於中文語言環境的同學的理解和學習。

壹圖勝萬言:

有壹個字符串序列”abcdef”,它的每壹個字符的角標關系就是上圖所示。其實這個方法也叫插空法。想象序列中每壹項之間都有壹個空隙,我們就是把0,1,2,3,4,5……這個數數序列插到空隙中。對於每壹項來說,它的左下角的角標就是自己的定位,大家都是對號入座的。

建立壹個有效的模型,通過這樣壹個明確的方法,至少我個人在平時列表序號時可以壹步到位,不會數錯。

在做切片時,有時還會用到倒序號,其實很好辦,比如字母d就是倒數第3個,很符合中文的語言習慣,python的序號就是-3.

那麽他是什麽原理呢?妳可以試著把上面的圖寫在壹個紙條上,把它首尾相接,這個時候,f的右下角標和a的左下角標重合,都是0,像不像壹個數軸?在數軸上,0的右側起,是1,2,3,4,……,0的左側起,自然就是-1,-2,-3,……了,很自然是不是?

再換壹個角度,從負數開始插空,是不是還是左下角角標規則?神奇吧?~

這就是python的神奇之處,他很符合我們的數學邏輯,而且是壹個統壹、自洽的嚴謹邏輯。

記住壹句話: 。總***分成三類, 0個冒號 1個冒號 2個冒號

當序號是0時,冒號語法允許不寫0。最後兩個公式裏,其實是[0:-4]和[-4:0]。可以發現,只有位置是0時,可以左右顛倒,因為0既可以表示第1位的序號數(在冒號左側時),也可以表示最後壹位(在冒號右側時,因為左閉右開),正因為如此特殊,0才可以省略不寫。

這其實又呼應了上壹章節的反向倒數序號,f的右下側角標其實是0,再次驗證這種抽象模型的合理性。再好好看看這個模型,記住它。

如果妳觀察得很仔細,前面的藍色註釋裏括號內的部分,正是每次省略冒號的默認值。

第二個冒號後的數字是步長,它決定了前面所得到的子串 是從第壹個開始第n個作為下壹個。

默認是1,就意味著,0:4首先取到前4個字符abcd,然後每+1個序號,取壹個,直到都取完,那默認就是abcd,沒有變化。

如果是題目中的步長為2,那麽就是取得到的abcd的第0位,第0+2位,第0+2+2位(此位不存在,不再往後累加2),那麽得到的是ac,妳懂了。