天天看點

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

在上一篇文章中,我介紹了python資料類型最基礎的數值類型,今天我将繼續介紹python中的序列類型以及序列類型的通用操作符和函數。

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

在開始之前,我先向大家簡單的介紹一下什麼是序列類型,序列類型就是序列間由序号引導,通過下标通路序列的特定元素,換句話說,序列類型是可以通過對内部元素的位置進行索引的,由于它可以通過位置進行索引(索引即通過元素的位置查找元素的值),是以序列類型都是一維資料,而且是可以被疊代的。

在python中,序列類型一共分為清單,元組,字元串,其中清單為可變序列,即建立完成後可以通過一些手段對内部的元素進行更改,而元組和字元串屬于不可變序列,即一旦建立不可更改。

既然序列類型可以通過位置索引,那麼我們該如何對一個序列類型進行索引呢?

下面我将以清單list=['a','b','c','d','e']為例,元組和字元串也是一樣的。

首先我們要知道python的兩個索引體系即正向遞增序号和反向遞減序号。

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

注意正向遞增序号是從0開始,而不是1。

現在我們需要知道序列中第m個元素是什麼,在正向遞增中通過 序列名稱+[m-1] 可以獲得

在反向遞減中通過 清單名稱+[-n] 獲得,其中n是清單中 元素個數-m+1即從後往前數第幾個元素。

還是以之前的清單為例,現在我要知道清單中第一個元素和最後一個元素。隻需要通過list[0]和list[-1]就可以知道對應的元素。(這裡是在互動模式下,如果你是在檔案模式下還需要用print列印出來)

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

從上面的例子可以看出,通過索引我們可以得到對應的元素值,但有些情況下我們隻知道清單中的某個元素,但是卻不知道它的索引位置,這時候,我們可以通過 清單.index() 的方式來擷取元素的索引值。

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

從上面的代碼可知,通過index()函數擷取的索引值是是正向遞增的數值。

可能有小夥伴會問了,如果序列類型中有相同的元素,index()函數會怎麼傳回呢?

如果在一個序列類型中有相同的元素,在預設情況下會傳回第一個元素的索引值,當然你也可以自己設定一個起點和終點。

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)
python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)
python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

好的,既然在序列類型中元素可以重複出現,那麼我們如果想要知道一個元素在序列中出現次數怎麼辦?

在python中,我們可以通過 序列名稱.count(元素) 擷取。

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

那麼我們想要知道一個序列中所有的元素個數,我們可以通過 len(序列的名稱) 擷取

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

如果我想判斷某個元素是否在一個序列中,可以通過操作符 in或者not in 判斷,結果以布爾值的形式傳回

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

好的,以上都是對序列中單個元素進行操作,現在我想要知道序列中某一段的元素,那該怎麼操作呢?同樣的,python也為我們提供了簡便的操作方法,這個方法便是我們常聽見的切片。這是序列類型中最重要的部分

切片的格式: 序列名稱[ i : j : k] 具體含義傳回從第 i+1 個元素開始,到第 j 個元素内的以k為步數的所有元素(即傳回索引值為 i 到 j-1的以k為步數的所有元素的子序列)。其中 : k 可以不寫,如果不寫預設值為1,即傳回之間的所有元素。注意傳回的仍是與之前相同的序列類型,即清單的切片為清單,字元串的切片為字元串。(注意切片支援正向遞增切片和反向遞減切片)

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)
python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

拓展:在切片過程中,i,j,k的正負值能夠影響傳回序列的排序方式。

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

正序傳回索引值

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

逆序傳回索引值

從上面的例子我們可以看到,

當 j 大于 i 且 k 為正值(不填則預設為1),清單是按照正序傳回切片值

當 j 小于 i 且 k 為負值(不填則預設為1),清單是按照逆序傳回切片值

當 j 大于 i 且k 為負值或者當 j 小于 i 且 k為正值,清單傳回空值(例子我沒舉,小夥伴可以自己嘗試一下)

我們繼續,現在如果我不知道清單最後一個元素的索引值,但是我想在的切片要取到最後一個元素這該怎麼辦?有小夥伴會說我可以先用index函數看一下最後一個的索引值,或者使用-1。的确這是一個方法,但是假設你找到最後一個元素的索引為j,但是你用list[ i : j]是不能取到最後一個元素,隻能取到第j-1個元素。同理用list[ i :-1]也是一樣的。

針對這樣的問題,我們有以下的方法可以解決。

第一種我們可以擴大元素,假設我們的序列中有10個元素,我要切第2個元素到第十個元素的值,那麼我可以這樣寫 序列名稱[1:11],通過擴大元素個數使索引值溢出,進而把第十個元素包含在切片中。不過這種方式可能還是會使你出現索引不完的情況,而且也不規範。

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

第二種方法便是省略範圍,即我不給需要我索引的開始值或者終止值甚至兩個都不給,如果不給開始值,那麼python會預設從第一個元素切片(即索引值為0),如果不給終止值,那麼python會預設以最後一個元素為結束(即索引作為-1)并且包括該值。文法格式是 序列名稱[(i):(j):(k)]括号内的可以省略。

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)
python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

好的,這是後小夥伴會問了,這個k有什麼作用呢?之前我們說過,k是步長的意思,也就是每隔k個機關取一次值(通俗的将就是所取的兩個元素之間包含k-1個元素)。是以如果我想對清單中的所有值以2個機關為長度切片的,結合上面的知識可以這樣寫

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

說到這裡,我們最後一個知識點也就來了,如果我要對這個清單進行翻轉(即把最後面的元素放到第一位,把倒數第二位的元素放到第二位,以此類推),便可以通過下面一種巧妙的方法實作

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

這裡我就不再解釋其原理,我想隻要你看懂上面的内容,就一定可以明白其中的玄機。

好的以上便是關于序列類型的通用操作,如果你有什問題可以直接私信我,下一篇将開始具體介紹序列類型的清單和元組類型,同時拓展介紹運算符中的指派運算符和邏輯運算符。同樣的,如果小夥伴覺得有所收獲,那麼還請點贊和轉發一下吧。

以下是12個序列類型的通用操作符和函數,有些我沒有介紹,感興趣的小夥伴可以自己嘗試

python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)
python将字元串逆序_小瘋談python:(四)資料類型之序列類型(上)

繼續閱讀