做內(nèi)貿(mào)的網(wǎng)站武漢網(wǎng)站設(shè)計十年樂云seo
Python數(shù)據(jù)容器
Python中的數(shù)據(jù)容器:
一種可以容納多份數(shù)據(jù)的數(shù)據(jù)類型,容納的每一份數(shù)據(jù)稱之為1個元素
每一個元素,可以是任意類型的數(shù)據(jù),如字符串、數(shù)字、布爾等。
數(shù)據(jù)容器根據(jù)特點的不同,如:
是否支持重復(fù)元素、是否可以修改、以及是否有序等
可分為5類,分別是:列表(list)、元組(tuple)、字符串(str)、集合(set)、字典(dict)
?
它們各有其特點,但也都滿足可容納多個元素的特性?。
列表的定義
為什么需要列表
一個人的姓名(TOM)我們想要在程序中存儲可以用字符串變量,但如果一個班級1是00位學(xué)生,每個人的姓名都要存儲,應(yīng)該如何書寫程序?聲明100個變量嗎?
這時候就顯得很麻煩,但其實我們使用列表就可以了, 列表一次可以存儲多個數(shù)據(jù)。
列表的定義
列表內(nèi)的每一個數(shù)據(jù),稱之為元素,以 [] 作為標(biāo)識、列表內(nèi)每一個元素之間用, 逗號隔開
定義語法:
使用[]的方式定義列表:
name_list = ['eternallei','Eternallei']
print(name_list)
print(type(name_list))
輸出結(jié)果:
嵌套列表的定義
my_list = [[5, 2, 0], [1, 3, 1, 4]]
print(my_list)
print(type(my_list))
輸出結(jié)果:
要知道的是列表是可以一次存儲多個數(shù)據(jù),且可以為不同的數(shù)據(jù)類型,支持嵌套。
列表的下標(biāo)(索引)?
那么我們該如何從列表中取出特定位置的數(shù)據(jù)?
可以使用:下標(biāo)索引
如圖,列表中的每一個元素,都有其位置下標(biāo)索引,從前向后的方向,從0開始,依次遞增
我們只需要按照下標(biāo)索引,即可取得對應(yīng)位置的元素。
# 語法:列表[下標(biāo)索引]my_list = [[5, 2, 0], [1, 3, 1, 4]]
print(my_list[0])
print(my_list[1])
結(jié)果:
嵌套列表的下標(biāo)(索引)
我們也可以對剛剛的嵌套列表進(jìn)行索引取值
如圖,那么它的下標(biāo)就有2個層級了:
my_list = [[5, 2, 0], [1, 3, 1, 4]]
# 取內(nèi)層第一個的第一個元素
print(my_list[0][0]) # 結(jié)果為:5
# 取內(nèi)層第二個的第三個元素
print(my_list[1][3]) # 結(jié)果為:4
# 取內(nèi)層第一個的第一個元素
print(my_list[-2][-3]) # 結(jié)果為:5
索引的兩個方向:從前向后的方向,編號從0開始遞增、從后向前的方向,編號從-1開始遞減
列表的常用操作(方法)
列表除了可以:定義、使用下標(biāo)索引獲取值以外,
列表也提供了一系列功能:
插入元素、刪除元素、清空列表、修改元素、統(tǒng)計元素個數(shù)等等功能,這些功能我們都稱之為:列表的方法
列表的查詢?
我們知道函數(shù)是一個封裝的代碼單元,可以提供特定功能。
在Python中,如果將函數(shù)定義為class(類)的成員,那么函數(shù)會稱之為:方法
函數(shù):
方法:
方法和函數(shù)功能一樣, 有傳入?yún)?shù),有返回值,只是方法的使用格式不同:
函數(shù)的使用:
方法的使用:
關(guān)于類和方法的定義,先知道如何使用方法即可,后續(xù)我們會學(xué)習(xí)到。
查找某元素的下標(biāo):
功能:查找指定元素在列表的下標(biāo),如果找不到,報錯ValueError
語法:列表.index(元素)?
index就是列表對象(變量)內(nèi)置的方法(函數(shù))
# 查詢字符所在下標(biāo)索引my_list = ['eternallei','Eternallei']
print(my_list.index('Eternallei')) # 結(jié)果為:1
統(tǒng)計列表內(nèi),有多少元素
語法:len(列表)
可以得到一個int數(shù)字,表示列表內(nèi)的元素數(shù)量
列表的修改功能
修改特定位置(索引)的元素值:
語法:列表[下標(biāo)] = 值
可以使用如上語法,直接對指定下標(biāo)(正向、反向下標(biāo)均可)的值進(jìn)行:重新賦值(修改)
# 使用正向下標(biāo)my_list = [5, 2, 0]
my_list[2] = 1
print(my_list) # 結(jié)果:[5, 2, 1]# 使用反向下標(biāo)my_list = [5, 2, 0]
my_list[-1] = 1
print(my_list) # 結(jié)果:[5, 2, 1]
插入元素:
語法:列表.insert(下標(biāo), 元素),在指定的下標(biāo)位置,插入指定的元素
# 插入元素my_list = [5, 2, 0]
# 在下標(biāo)索引3插入字符串,因為沒有所以就在0后面做到了追加效果...
my_list.insert(3, "郭佳佳")
print(my_list)
追加元素:
語法:列表.append(元素),將指定元素,追加到列表的尾部?
# 追加元素my_list = [5, 2, 0]
my_list.append(1)
print(my_list) # 結(jié)果:[5, 2, 0, 1]my_list = [5, 2, 0]
my_list.append([1, 3, 1, 4])
print(my_list) # 結(jié)果:[5, 2, 0, [1, 3, 1, 4]]
追加元素方式2:
語法:列表.extend(其它數(shù)據(jù)容器),將其它數(shù)據(jù)容器的內(nèi)容取出,依次追加到列表尾部
my_list = [5, 2, 0]
my_list.extend([1, 3, 1, 4])
print(my_list) # 結(jié)果:[5, 2, 0, 1, 3, 1, 4]
刪除元素:
語法1: del 列表[下標(biāo)]
語法2:列表.pop(下標(biāo))
# 刪除元素my_list = [5, 2, 0]
del my_list[0]
print(my_list) # 結(jié)果:[2, 0]my_list = [5, 2, 0]
my_list.pop(0)
print(my_list) # 結(jié)果:[2, 0]
刪除某元素在列表中的第一個匹配項
語法:列表.remove(元素)
清空列表內(nèi)容
語法:列表.clear()?
?統(tǒng)計某元素在列表內(nèi)的數(shù)量
語法:列表.count(元素)
列表的方法 - 總覽
編號 | 使用方式 | 作用 |
1 | 列表.append(元素) | 向列表中追加一個元素 |
2 | 列表.extend(容器) | 將數(shù)據(jù)容器的內(nèi)容依次取出,追加到列表尾部 |
3 | 列表.insert(下標(biāo), 元素) | 在指定下標(biāo)處,插入指定的元素 |
4 | del 列表[下標(biāo)] | 刪除列表指定下標(biāo)元素 |
5 | 列表.pop(下標(biāo)) | 刪除列表指定下標(biāo)元素 |
6 | 列表.remove(元素) | 從前向后,刪除此元素第一個匹配項 |
7 | 列表.clear() | 清空列表 |
8 | 列表.count(元素) | 統(tǒng)計此元素在列表中出現(xiàn)的次數(shù) |
9 | 列表.index(元素) | 查找指定元素在列表的下標(biāo) 找不到報錯ValueError |
10 | len(列表) | 統(tǒng)計容器內(nèi)有多少元素 |
可以看到功能方法非常多,但不需要硬記下來。要做的是,有一個模糊印象,知曉有這樣的用法即可。在需要的時候,隨時查閱。
總結(jié)一下列表有如下特點:
可以容納多個元素(上限為2**63-1、9223372036854775807個)
可以容納不同類型的元素(混裝)
數(shù)據(jù)是有序存儲的(有下標(biāo)序號)
允許重復(fù)數(shù)據(jù)存在
可以修改(增加或刪除元素等)?
列表的遍歷 - while循環(huán)
既然數(shù)據(jù)容器可以存儲多個元素,那么,就會有需求從容器內(nèi)依次取出元素進(jìn)行操作。
將容器內(nèi)的元素依次取出進(jìn)行處理的行為,稱之為:遍歷、迭代。
可以使用前面學(xué)過的while循環(huán)使用列表[下標(biāo)]的方式取出
循環(huán)條件如何控制定義一個變量表示下標(biāo),從0開始
循環(huán)條件為:下標(biāo)值 < 列表的元素數(shù)量
列表的遍歷 - for循環(huán)
除了while循環(huán)外,Python中還有另外一種循環(huán)形式:for循環(huán)。
對比while,for循環(huán)更加適合對列表等數(shù)據(jù)容器進(jìn)行遍歷。
語法:
表示,從容器內(nèi),依次取出元素并賦值到臨時變量上。
在每一次的循環(huán)中,我們可以對臨時變量(元素)進(jìn)行處理。
?每一次循環(huán)將列表中的元素取出,賦值到變量i,提供操作
結(jié)果大家可自行嘗試
while循環(huán)和for循環(huán)的對比
while循環(huán)和for循環(huán),都是循環(huán)語句,但細(xì)節(jié)不同:
在循環(huán)控制上:
while循環(huán)可以自定循環(huán)條件,并自行控制
for循環(huán)不可以自定循環(huán)條件,只可以一個個從容器內(nèi)取出數(shù)據(jù)
在無限循環(huán)上:
while循環(huán)可以通過條件控制做到無限循環(huán)
for循環(huán)理論上不可以,因為被遍歷的容器容量不是無限的
在使用場景上:
while循環(huán)適用于任何想要循環(huán)的場景
for循環(huán)適用于,遍歷數(shù)據(jù)容器的場景或簡單的固定次數(shù)循環(huán)場景
相比下來for循環(huán)更簡單,但while更靈活,所以說for用于從容器內(nèi)依次取出元素并處理,而while用以任何需要循環(huán)的場景