第7天 Python 資料結構 序列

2022-01-29 17:25:00 字數 3619 閱讀 5571

by 潮汐

python 中的資料結構是通過某種方式組織在一起的資料元素的集合,這些資料元素可以是數字、字元、甚至可以是其他資料結構

在 python 中,最基本的資料結構是序列(列表和元組),序列中的每個元素都有乙個序號(元素的具體位置),這個序號叫索引,索引下標從 0 開始,以此類推...... 本文著重介紹 python 的序列及其實際應用。

例如:

#定義乙個學生序列

>>> stuinfo=['zhangsan','lisi','wangwu',18,20]

同時序列中還可以包含序列,例如資料庫:database

#定義學生姓名和學生年齡,然後再定義乙個屬於自己的資料庫將兩個列表加入

>>> stuname=['zhangsan','lisi','wangwu']

>>> stuage=[18,20,16]

>>> database=[stuname,stuage]

>>> database

[['zhangsan', 'lisi', 'wangwu'], [18, 20, 16]]

注意:

python 還有一種名為容器(container)的資料結構,容器可以包含其他任意物件,容器主要包括序列和對映(例如:字典)兩類。序列的每個元素都有自己的編號,而對映每個元素則有乙個叫做「鍵」的名字。集合是另一種容器(在後面章節會作詳細講解)。

python 中所有序列型別都可以進行一些特定的操作,這些操作包括:索引、分片、相加、相乘以及檢查某個元素是否屬於序列的成員-->成員資格檢測

除此之外,python 還有計算序列長度,找出最大和最小元素的內建函式。

1.索引

序列中所有元素都有編號,這些編號是從 0 開始,依次遞增,訪問這些元素通過下標即可訪問,而這個編號就是索引,例如:

>>> database[0]

['zhangsan', 'lisi', 'wangwu']

>>> database[1]

[18, 20, 16]

#字串序列的索引

>>> str='hello'

>>> str[0]

'h'>>> str[1]

'e'

注意: 字串就是乙個由字元組成的序列,索引0指向第乙個元素

以上這就是索引,所有序列中都可以通過元素編號的方式進行索引,當使用負數索引時,python 會從右邊到左進行所有,-1 是從序列的最後乙個元素開始,如下:

#從最後乙個元素開始

>>> str[-1]

'o'#從倒數第二個元素開始

>>> str[-2]

'l'

2.分片

同樣的和索引類似,分片是通過冒號操作來訪問一定範圍內的元素,例如:

# 構建乙個序列tag,裡面包含乙個元素

>>> tag=['']

# 拿到這個元素後通過分片取出乙個範圍的值

>>> tag[0][0:24]

''

由上所知,分片操作的的實現需要提供兩個索引作為邊界,是乙個左閉右開的區間,也就是第 1 個索引包含在分片內,而第2個索引不包含在這個分片內,例如:

>>> num=[1,2,3,4,5,6,7,8,9,10]

# 表示從第四個到最後乙個元素

>>> num[3:10]

[4, 5, 6, 7, 8, 9, 10]

除了上述方案,也可以通過顯示方式進行操作:

2.1 分片快捷操作

>>> num[0:3]

# 取到前面3個資料

[1, 2, 3]

2.2 分片步長操作

分片操作可以給元素設定步長,在開始和結束的時候指定相應步長獲取元素,例如:

# 按照步長為2返回第1個和第6個之間的元素

>>> num[0:6:2]

[1, 3, 5]

另外需要注意的是負數步長是從元素尾部到前遍歷整個序列,所以負數的分片開始索引一定要大於結束索引

>>> num[7:-1]

[8, 9]

當開始索引和結束索引是負數時開始所以必須小於結束索引:

>>> num[-9:-1]

[2, 3, 4, 5, 6, 7, 8, 9]

對於乙個正數步長,python會從序列的頭部開始向右提取元素,直達最後乙個元素,而對於負數步長,則是從序列的尾部開始向左提取元素,直達提取到第乙個,例如:

# 提取前6個元素,步長為2

>>> num[:6:2]

[1, 3, 5]

# 提取從後往前的8個元素,步長為2

>>> num[:2:-2]

[10, 8, 6, 4]

3.序列相加

序列相加通過加號「+」進行序列和序列之間的連線操作:

>>> 'hello'+' world !'

'hello world !'

>>> [1,2,3]+['zhangsan','lisi','wangwu']

[1, 2, 3, 'zhangsan', 'lisi', 'wangwu']

注意:只有相同型別的序列才能進行連線操作

4.序列相乘

乙個數字 x 乘以乙個序列會產生乙個新的序列,原來的序列會被重置成x次

>>> ['hello'+' world !']*3

['hello world !', 'hello world !', 'hello world !']

5.成員資格

檢查乙個元素是否在乙個序列中使用運算子 in 進行檢查, in 運算子返回檢查某個條件的布林值,若為真返回 true,否則返回 false,例如:

>>> str='hello'

>>> 'h' in str

true

>>> 'x' in str

false

6.序列長度、最大值和最小值

序列長度、最大值和最小值使用內建函式 len、max、min 進行檢測,len 返回序列中所包含的元素數量,max 和 min 分別返回序列中最大值和最小值的元素

>>> len([11,34,23])

3>>> max(11,34,23)

34>>> min(11,34,23)

11

文中示例**:python-100-days

本節給大家介紹了 python 資料結構之序列的使用,對 python 工程師使用提供了支撐,可以在專案中實際應用中取出相應元素。

示例**:python-100-days-day007

python資料結構第4天

棧的python實現 class stack def init self self.items def is empty self return self.items def push self,item def pop self self.items.pop def peek self retur...

7天解決python資料結構 Python資料結構

一.列表 在其他語言中成為陣列,是一種基本的資料結構型別 1.列表中的元素如何儲存 2.列表提供了哪些基本操作 3.這些操作的複雜度是多少 1.列表在記憶體中以一塊連續的空間存放,列表中存放的是每個元素的引用 2.刪除 remove,pop 修改 根據索引修改 遍歷,查詢 3.remove o n ...

python基礎資料結構 序列

python基礎資料結構 序列 在python中,常見的基本序列有列表 元組 字串。以下依次對這三種常見的序列進行方法概述,本文章注重知識圖譜,具體的使用方法詢問 度娘 棧 先進後出 lifo 假設有乙個空列表,命名為 p p for i in range 1 10 p 為 1,2,3,4,5,6,...