Python數(shù)據(jù)類型-序列sequence
1 概述
在前面,我們已經(jīng)對(duì)Python學(xué)習(xí)做了系統(tǒng)的知識(shí)梳理(Python思維導(dǎo)圖),我們接下來(lái)把知識(shí)點(diǎn)分節(jié)進(jìn)行細(xì)講。這一節(jié),我們講解序列。
在介紹 Python 的常用數(shù)據(jù)類型之前,我們先看看 Python 最基本的數(shù)據(jù)結(jié)構(gòu) -——序列(sequence)。序列的一個(gè)特點(diǎn)就是根據(jù)索引(index,即元素的位置)來(lái)獲取序列中的元素,第一個(gè)索引是 0,第二 個(gè)索引是 1,以此類推。

所有序列類型都可以進(jìn)行某些通用的操作,比如:
索引( indexing )
分片( sliceing )
迭代( iteration )
加( adding )
乘( multiplying )
除了上面這些,我們還可以檢查某個(gè)元素是否屬于序列的成員,計(jì)算序列的長(zhǎng)度等等。
重點(diǎn)講索引和切片。
2 基本操作
2.1 索引
序列中的元素可以通過索引獲取,索引從 0 開始??纯聪旅娴睦樱?/strong>
>>> nums = [1, 2, 3, 4, 5] # 列表 >>> nums[0]? 1? >>> nums[1] 2? >>> nums[-1] # 索引 -1 表示最后一個(gè)元素? 5? >>> s = 'abcdef' # 字符串? >>> s[0]? 'a'? >>> s[1]? 'b'? >>>? >>> a = (1, 2, 3) # 元組? >>> a[0]? ?1? ?>>> a[1]? ?2
注意到 : -1 則代表序列的最后一個(gè)元素, -2 代表倒數(shù)第二個(gè)元素,以此類推。
2.2 切片
索引用于獲取序列中的單個(gè)元素,而分片則用于獲取序列的部分元素。分片操作需要提供兩個(gè)索引作為 邊界,中間用冒號(hào)相隔,比如:
>>> numbers = [1, 2, 3, 4, 5, 6]? >>> numbers[0:2] # 列表分片? [1, 2]? >>> numbers[2:5]? [3, 4, 5]? >>> s = 'hello, world' # 字符串分片? >>> s[0:5]? 'hello'? >>> a = (2, 4, 6, 8, 10) # 元組分片? >>> a[2:4]? (6, 8)
這里需要特別注意的是,分片有兩個(gè)索引,第 1 個(gè)索引的元素是包含在內(nèi)的,而第 2 個(gè)元素的索引 則不包含在內(nèi),也就是說,numbers[2:5] 獲取的是 numbers[2], numbers[3], numbers[4],沒有包括 numbers[5] 。
下面列舉使用分片的一些技巧:
- (1)訪問最后幾個(gè)元素
- (2)使用步長(zhǎng)
訪問最后幾個(gè)元素 :
假設(shè)需要訪問序列的最后 3 個(gè)元素,我們當(dāng)然可以像下面這樣做:
>>> numbers = [1, 2, 3, 4, 5, 6]? >>> numbers[3:6]? [4, 5, 6]
有沒有更簡(jiǎn)潔的方法呢?想到可以使用負(fù)數(shù)形式的索引,你可能會(huì)嘗試這樣做:
>>> numbers = [1, 2, 3, 4, 5, 6]? >>> numbers[-3:-1] # 實(shí)際取出的是 numbers[-3], numbers[-2]? [4, 5]? >>> numbers[-3:0] # 左邊索引的元素比右邊索引出現(xiàn)得晚,返回空序列? []
上面的兩種使用方式并不能正確獲取序列的最后 3 個(gè)元素, Python 提供了一個(gè)捷徑 :
(也就是說,如果希望分片包含最后一個(gè)元素,可將第 2 個(gè)索引置為空)
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8]? >>> numbers[-3:]? [6, 7, 8]? >>> numbers[5:]? [6, 7, 8]
如果要復(fù)制整個(gè)序列,可以將兩個(gè)索引都置為空:
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8]? >>> nums = numbers[:]? >>> nums? [1, 2, 3, 4, 5, 6, 7, 8]
使用步長(zhǎng) :
使用分片的時(shí)候,步長(zhǎng)默認(rèn)是 1 ,即逐個(gè)訪問,我們也可以自定義步長(zhǎng),比如:
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8]? >>> numbers[0:4]? [1, 2, 3, 4]? >>> numbers[0:4:1] # 步長(zhǎng)為 1,不寫也可以,默認(rèn)為 1? [1, 2, 3, 4]? >>> numbers[0:4:2] # 步長(zhǎng)為 2,取出 numbers[0], numbers[2]? [1, 3] >>> numbers[::3] # 等價(jià)于 numbers[0:8:3],取出索引為 0, 3, 6 的元素? [1, 4, 7]
另外,步長(zhǎng)也可以是負(fù)數(shù),表示從右到左取元素:
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8]? >>> numbers[0:4:-1]? []? >>> numbers[4:0:-1] # 取出索引為 4, 3, 2, 1 的元素? [5, 4, 3, 2]? >>> numbers[4:0:-2] # 取出索引為 4, 2 的元素? [5, 3]? >>> numbers[::-1] # 從右到左取出所有元素? [8, 7, 6, 5, 4, 3, 2, 1]? >>> numbers[::-2] # 取出索引為 7, 5, 3, 1 的元素? [8, 6, 4, 2]? >>> numbers[6::-2] # 取出索引為 6, 4, 2, 0 的元素? [7, 5, 3, 1]? >>> numbers[:6:-2] # 取出索引為 7 的元素? [8]
這里總結(jié)一下使用分片操作的一些方法, 分片的使用形式是 :
# 左索引:右索引:步長(zhǎng)? left_index:right_index:step
要牢牢記住的是 :
左邊索引的元素包括在結(jié)果之中,右邊索引的元素不包括在結(jié)果之中;
當(dāng)使用一個(gè)負(fù)數(shù)作為步長(zhǎng)時(shí),必須讓左邊索引大于右邊索引;
對(duì)正數(shù)步長(zhǎng),從左向右取元素;對(duì)負(fù)數(shù)步長(zhǎng),從右向左取元素;
2.3 加
序列可以進(jìn)行「加法」操作,如下:
>>> [1, 2, 3] + [4, 5, 6] # 「加法」效果其實(shí)就是連接在一起? [1, 2, 3, 4, 5, 6]? >>> (1, 2, 3) + (4, 5, 6)? (1, 2, 3, 4, 5, 6)? >>> 'hello, ' + 'world!' 'hello, world!'? >>> [1, 2, 3] + 'abc'? Traceback (most recent call last):? File "<stdin>", line 1, in <module>? TypeError: can only concatenate list (not "str") to list #這里需要注意的是:兩種相同類型的序列才能「加法」操作。
2.4 乘
序列可以進(jìn)行「乘法」操作,比如:
>>> 'abc' * 3? 'abcabcabc'? >>> [0] * 3? [0, 0, 0]? >>> [1, 2, 3] * 3? [1, 2, 3, 1, 2, 3, 1, 2, 3]
到此這篇關(guān)于Python數(shù)據(jù)類型-序列sequence的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)類型 序列sequence內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于numpy數(shù)組中元素單個(gè)選取或部分選取問題
這篇文章主要介紹了關(guān)于numpy數(shù)組中元素單個(gè)選取或部分選取問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
Python將文字轉(zhuǎn)成語(yǔ)音并讀出來(lái)的實(shí)例詳解
今天小編就為大家分享一篇Python將文字轉(zhuǎn)成語(yǔ)音并讀出來(lái)的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-07-07
python面向?qū)ο蠓▽?shí)現(xiàn)圖書管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python面向?qū)ο蠓▽?shí)現(xiàn)圖書管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
python+opencv3生成一個(gè)自定義純色圖教程
今天小編就為大家分享一篇python+opencv3生成一個(gè)自定義純色圖教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-02-02
python GUI庫(kù)圖形界面開發(fā)之PyQt5信號(hào)與槽的高級(jí)使用技巧裝飾器信號(hào)與槽詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)之PyQt5信號(hào)與槽的高級(jí)使用技巧裝飾器信號(hào)與槽詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03
python將dict中的unicode打印成中文實(shí)例
這篇文章主要介紹了python將dict中的unicode打印成中文實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-05-05
使用Python實(shí)現(xiàn)文本轉(zhuǎn)語(yǔ)音(TTS)并播放音頻
在開發(fā)涉及語(yǔ)音交互或需要語(yǔ)音提示的應(yīng)用時(shí),文本轉(zhuǎn)語(yǔ)音(TTS)技術(shù)是一個(gè)非常實(shí)用的工具,下面我們來(lái)看看如何使用gTTS和playsound庫(kù)將文本轉(zhuǎn)換為語(yǔ)音并播放音頻文件吧2025-03-03

