python数据结构的列表_Python数据结构之列表
一,數(shù)據(jù)結(jié)構(gòu)的概念
數(shù)據(jù)結(jié)構(gòu)是通過某種方式組織在一起的數(shù)據(jù)集合,這些數(shù)據(jù)元素可以是數(shù)字或者字符,甚至可以是其他的數(shù)據(jù)結(jié)構(gòu)。
Python中最基本的數(shù)據(jù)結(jié)構(gòu)是序列(sequence)。序列中的每個元素被分配一個序號——元素位置,稱為索引,第一個索引為0,第二個為1,以此類推,最后的索引位為-1.
二,序列操作
序列的操作包括:索引,分片,加,乘,檢查某個元素是否屬于序列成員。Python還可以計算序列長度,找出最大值max()方法,最小值min()方法。同時還可對序列進行迭代iter方法。迭代的意思就是可以對序列中的元素重復(fù)執(zhí)行某些操作。
1,索引
我們可以根據(jù)索引的位置來取數(shù)據(jù),使用負數(shù)時,可以從列表倒序取出數(shù)據(jù)。
列表的索引
data=["list","string","dict","tuple"]#使用索引取出對應(yīng)數(shù)值,Python默認0位為第一位,所以使用索引1返回列表第二個數(shù)值
print(data[1])
運行結(jié)果為string#使用負數(shù)取末尾值
print(data[-1])
運行結(jié)果為tuple
2,分片
分片操作可以取出范圍內(nèi)的數(shù)據(jù),使用冒號隔開兩個索引來進行操作。分片操作有一個很形象的比喻:顧頭不顧尾,意思就是我們兩個索引位,只包含第一個索引位,第二個索引位不在分片區(qū)內(nèi)
#列表的分片操作
data=["list","string","dict","tuple"]#分片操作取出前三個數(shù)據(jù)
print(data[0:3])
運行結(jié)果:['list', 'string', 'dict']#取出全部數(shù)據(jù)
print(data[:])
運行結(jié)果:['list', 'string', 'dict', 'tuple']#負數(shù)取值應(yīng)注意,左邊索引位要比右邊索引位小,按從小到大的方式
print(data[-3:-1])
運行結(jié)果:['string', 'dict']#可以使用步長取值
print(data[0:3:2])
運行結(jié)果:['list', 'dict']#倒序取值時,要注意步長應(yīng)使用負數(shù),且不能為0
print(data[3:1:-1])
運行結(jié)果:['tuple', 'dict']
"對于一個正數(shù)步長,Python會從頭開始向右取值,直到最后一個元素。對于一個負數(shù)步長,則是從序列的尾部開始向左取值,直到元素的第一個元素"
3,序列的加乘操作
使用加操作可以使兩個列表連接到一起,需要注意的是,在使用加操作的時候左右兩邊的數(shù)據(jù)必須是同一類型,不同類型的數(shù)據(jù)不能進行連接操作。
#列表的連接操作
data=["list","string","dict","tuple"]
data1=[0,1,2,3]
data3="hello world"
#列表的加操作,連接兩個列表、
print(data+data1)
運行結(jié)果:['list', 'string', 'dict', 'tuple', 0, 1, 2, 3]#測試列表可以與不同類型的值相連接
print(data+data3)
運行結(jié)果:TypeError: can only concatenate list (not "str") to list
列表的乘操作
print(data*3)
運行結(jié)果:
['list', 'string', 'dict', 'tuple', 'list', 'string', 'dict', 'tuple', 'list', 'string', 'dict', 'tuple']
三,列表
1,list函數(shù)
使用list函數(shù)可以改變一些數(shù)據(jù)的數(shù)據(jù)類型:例如字符串,元組等
#使用list函數(shù)轉(zhuǎn)變數(shù)據(jù)類型
data="hello world"
print(list(data))
運行結(jié)果:
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
2,列表元素賦值
列表的元素賦值使用索引號進行修改,需要注意,我們不能為一個不存在的索引號賦值
列表的賦值操作
data=["list","string","dict","tuple"]print(data)
data[-1]="value"
print(data)
運行結(jié)果
原列表內(nèi)容:['list', 'string', 'dict', 'tuple']
修改后內(nèi)容:['list', 'string', 'dict', 'value']
列表元素分片賦值操作,分片操作可以給一個空列表賦值,也可以為列表做分片替換
#分片賦值
data=["list","string","dict","tuple","int"]
data[:2]=["list1","string1"]print(data)
運行結(jié)果:
['list1', 'string1', 'dict', 'tuple', 'int']#使用分片賦值的原理,對列表進行刪除元素操作
data=["list","string","dict","tuple","int"]#data[:]表示列表所有元素
data[:]=[]print(data)
運行結(jié)果 : []空列表
2,刪除列表元素
刪除列表元素使用del關(guān)鍵字加索引號進行操作,索引號超出列表范圍將報錯
#刪除列表元素操作,使用del關(guān)鍵字
data=["list","string","dict","tuple"]print(data)del data[1]print(data)
運行結(jié)果
原列表內(nèi)容:['list', 'string', 'dict', 'tuple']
刪除后內(nèi)容:['list', 'dict', 'tuple']
3,列表操作
1,append
此方法用于別表末尾添加值,它操作后的列表不是一個修改過的新列表(類似拷貝的原理,會有專門內(nèi)容介紹),而是返回一個修改過的原列表。
#append方法
data=["list","string","dict","tuple","int"]print(data)
data.append("float")print(data)
原列表內(nèi)容:['list', 'string', 'dict', 'tuple', 'int']
添加后的內(nèi)容:['list', 'string', 'dict', 'tuple', 'int', 'float']
2,count
此方法統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)。
#count方法
data=["list","string","dict","tuple","int","int"]print(data.count("int"))
運行結(jié)果:2
3.extend
此方法可以在列表末尾一次性添加另一個序列的多個值,可以擴展原列表,而不是復(fù)制出一個新列表
#extend
data=["list","string","dict","tuple","int"]
data2=["list1","string1"]print(data)
data.extend(data2)print(data)
運行結(jié)果:
原data列表:['list', 'string', 'dict', 'tuple', 'int']
擴展后data列表:['list', 'string', 'dict', 'tuple', 'int', 'list1', 'string1']
此方法對比列表連接操作的不同,連接操作不會在原有列表上進行擴展,只會創(chuàng)建一個新的列表。
data=["list","string","dict","tuple","int"]
data2=["list1","string1"]print(data+data2)print(data)
運行結(jié)果:
['list', 'string', 'dict', 'tuple', 'int', 'list1', 'string1']
['list', 'string', 'dict', 'tuple', 'int']
從結(jié)果可以看出,data列表并沒有被覆蓋,而是創(chuàng)建了一個新列表
4,index
index方法用于從列表中查找出某個元素第一次匹配成功后的索引位置
#index方法
data=['list', 'string', 'dict', 'tuple', 'int']print(data.index("int"))
運行結(jié)果:4 返回一個索引位
5,insert
insert方法用于將對象插入到列表中,插入位置的值會自動向后移位,在添加新值后,原列表后進行擴展操作,原列表將被覆蓋。
#insert方法
data=['list', 'string', 'dict', 'tuple', 'int']
data.insert(0,"string")print(data)
運行結(jié)果:
['string', 'list', 'string', 'dict', 'tuple', 'int']
6,pop
pop方法,默認刪除列表最后一個值,并且返回刪除的值,也可以根據(jù)索引位刪除指定值,且返回被刪除數(shù)值的值。
此方法配合insert方法可以實現(xiàn)隊列操作,使用insert(0)添加值,使用pop(0)刪除值,實現(xiàn)一個先進先出的隊列,也可以使用append方法,使用pop方法,實現(xiàn)一個先進后出的隊列
放入和移出操作就是入棧和出棧,python可以使用append方法進行入棧操作,pop方法模擬出棧操作
#pop方法
data=['list', 'string', 'dict', 'tuple', 'int']print(data.pop())#默認刪除最后一個值
print(data.pop(1))#指定刪除索引位1的值
運行結(jié)果:
int
string
在指定索引位時,不能超出列表長度,否則報錯
pop方法是唯一一個既能刪除一個值又能返回該元素值的列表方法
一個先進先出隊列的實現(xiàn)示例:
#先進先出的隊列實現(xiàn)
data=[]for i in range(4):
data.insert(0,i)print(data)print(data.pop(0))print(data)
運行結(jié)果:
添加值后的列表 [0]
取出的值 0
取出值后的列表 []
添加值后的列表 [1]
取出的值1取出值后的列表 []
一個先進后出的隊列實現(xiàn):
#先進后出的隊列實現(xiàn)
data=[5,]for i in range(2):
data.insert(0,i)print("添加值后的列表",data)print("取出的值",data.pop())print("取出值后的列表",data)
運行結(jié)果:
添加值后的列表 [0,5]
取出的值5取出值后的列表 [0]
添加值后的列表 [1, 0]
取出的值 0
取出值后的列表 [1]
7,remove
remove方法用于移除列表中某元素第一個匹配項:它移除后不會返回一個刪除元素的值
#remove方法
data=['list', 'string', 'dict', 'tuple', 'int']
data.remove("int")print(data)
運行結(jié)果:
['list', 'string', 'dict', 'tuple']
8,reverse
reverse方法將列表中的元素反向存放,要想取值,使用reversed,此方法返回一個迭代器
#reverse
data=[1,2,3,4,5]print(data.reverse())
redata=data.reverse()#測試后,reverse沒有返回值
print(redata)#要想取得返回值,使用reserved,返回一個迭代器
a=reversed(data)print(a)#
for i ina:print(i)
9,sort
sort方法用于在原位置對列表進行排序,會改變原列表,是列表元素按一定順序排列。這個方法總是產(chǎn)生一個列表,所以他可以對任何序列進行操作排序
#sort
data=[2,5,7,8,5,3,1,4]
data.sort()print(data)
運行結(jié)果:
[1, 2, 3, 4, 5, 5, 7, 8]
sort方法沒有返回值,它會改變原列表的值的順序。
列表的使用就到這里,到后邊會介紹列表生成式,和列表推導(dǎo)式的使用
總結(jié)
以上是生活随笔為你收集整理的python数据结构的列表_Python数据结构之列表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python类高级用法_十.python
- 下一篇: hdfs复制文件夹_一文理解HDFS