python筆記2-數據類型:列表[List]常用操作


序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,索引從0開始,依此類推。

序列都可以進行的操作:包括 索引,切片,加,乘,檢查成員

列表是最常用的Python數據類型,list 是一種有序的集合列表是可變變量,即能通過列表的下標進行修改值

創建一個列表,只要把逗號分隔的不同的數據項使用方括號括起來即可。如下所示:

nums = [1, 2, 3, 'beijing', 'shanghai']  #定義列表
num1 = [1, 2, 3, 4, 5, 6]  #List內元素為int類型
num2 = ['a',' b', 'c', 'd'] #List內元素為str類型

List數據類型的如下:

增加元素:

nums = [1, 2, 3, 'beijing', 'shanghai']  #定義列表
nums.append('byz') #添加的值從最末尾添加,執行結果:[1, 2, 3,'beijing', 'shanghai','byz']
nums.insert(2, '888') #在指定位置添加元素,2代表下標,執行結果:[1, 2, '888', 3, 'beijing', 'shanghai', 'byz']

刪除元素:

nums = [1, 2, 3, 'beijing', 'shanghai'] 
# pop(num) 方法的返回值就是刪除的指定位置的元素值
nums.pop() #默認刪除最后一個元素,執行結果:[1, 2, 3, 'beijing']
nums.pop(2) #刪除指定位置的元素,執行結果:[1, 2, 'beijing']
nums.clear()  #清空列表,執行結果:[]
del nums[0]   #使用del關鍵字,刪除指定位置的元素,0代表下標,執行結果:[ 2, 'beijing']
nums.remove('beijing')  #remove()刪除方法,傳入的參數是 元素值,pop()刪除指定位置元素,傳入的參數是下標

修改元素:

nums = [1, 2, 3, 'beijing', 'shanghai']  #定義列表
#修改,通過下標來修改list元素值
nums[0] = 'hello'  #修改List內的元素值,執行結果:['hello', 2, 3, 'beijing', 'shanghai']
nums[5] = 'haha' #修改不存在的下標,報錯信息:IndexError: list assignment index out of range

查詢元素:

nums = [1, 2, 3, 'beijing', 'shanghai']  #定義列表
#查詢,通過下標和for循環來遍歷取值
print(nums[3])   #通過下標取值,下標從0開始,執行結果:beijing
for num in nums:
    print(num)  #通過for循環,遍歷list內的元素

 List中的count(元素)方法,可以用來判斷元素是否存在List內,用法如下:

#判斷元素是否存在List內,可以使用in方法,也可以使用count()方法
names = [1, 2, 3, 'beijing', 'beijing', 'shanghai']
print(names.count('beijing'))  #查找元素在list里面的次數,執行結果為:2
print(names.count('hahah')) #若查找的元素不在list里面,返回結果為0
num = names.count('beijing')
if num >0:
    print('說明元素存在')
else:
    print('元素不存在')

 獲取List元素的下標,用法如下:

names = [1, 2, 3, 'beijing', 'beijing', 'shanghai']
print(names.index('beijing'))   #獲取beijing這個元素的下標值,如果有多個元素時,返回第一個元素的下標值
print(names.index('a')) #如果查找的元素不存,則報錯:ValueError: 'a' is not in list
print(names.index('beijing', 2))    #可以指定從哪個元素開始查找,2代表開始查找的下標
print(names.index('beijing', 2, 3)) #可以指定查找范圍,2,3代表開始、結束的下標值,查找范圍不包含結束下標對應的元素,顧頭不顧尾

List的extend方法,更改列表的值,用法如下:

names = [1, 2, 3, 'beijing', 'beijing', 'shanghai']
status = ['ywq', 'lhl', 'yqq']
print('列表合並的結果:', status + names)  #兩個列表List合並,產生一個新的變量,執行結果:['ywq', 'lhl', 'yqq', 1, 2, 3, 'beijing', 'beijing', 'shanghai']
print('這個是extend:', status.extend(names))  #extens沒有返回值,執行結果為:None
print('extens后的status:', status)   #將names列表的 添加 到status里,status的值進行了更改

list的extend 與 appen方法的區別:

nums = [23, 34, 21, 2, 33, 456, 12]
status = ['a','b','c']
print(status.extend(nums))
print(status)  #extends是將nums的添加到 status,執行結果為一維數組:['a', 'b', 'c', 23, 34, 21, 2, 33, 456, 12]
nums = [23, 34, 21, 2, 33, 456, 12]
status = ['a','b','c']
print(status.append(nums)) 
print(status)  #append 是nums列表作為一個元素 添加到status列表的最后面,執行結果為二維數組:['a', 'b', 'c', [23, 34, 21, 2, 33, 456, 12]]

排序sort方法,用法如下:

nums = [23, 34, 21, 2, 33, 456, 12]
print('nums排序前:', nums)          #執行結果:[23, 34, 21, 2, 33, 456, 12]
nums.sort()              #默認是升序排列
print('sort 排序后的nums:', nums)    #執行結果:[2, 12, 21, 23, 33, 34, 456]
nums.sort(reverse=True)  #指定reverse=True,排序為降序排列
print('降序排列的nums:', nums)       #執行結果:[456, 34, 33, 23, 21, 12, 2]

反轉數組,如下:

nums = [23, 34, 21, 2, 33, 456, 12]
print(nums.reverse()) #反轉的是nums的值,nums.reverse()沒有返回值,執行結果為None
print(nums)  #反轉后的nums,執行結果:[12, 456, 33, 2, 21, 34, 23]

多維數組,獲取元素的值:

num = [1, 2, 9.8, ['a', 'b', ['hehe', 'haha']]]
print(num[3][0])  #獲取二維數組 a這個元素值
print(num[3][2][0])  #獲取三維數組,hehe這個元素值

切片操作

切片也就是另一種方式獲取列表的值,它可以獲取多個元素,可以理解為,從第幾個元素開始,到第幾個元素結束,獲取他們之間的值,格式是name:[1:10],比如說要獲取name的第一個元素到第五個元素,就可以用name[0:6],切片是不包含后面那個元素的值的,記住顧頭不顧尾

names = ['zcl','py','byz']
print(names[0:2])   #切片的意思就是從list或者字符串里面,取幾個元素,執行結果['zcl', 'py']
print(names[:2])    #默認從0開始取值,開始下標0可以不用寫,執行結果:['zcl', 'py']
print(names[1:])    #從第1個下標開始取值,取后面所有的值,那么結束下標值可以不寫
print(names[:])     #不寫開始、結束的下標時,默認取整個列表的值
print(names[-1:])   #取最后一個值,下標從-1開始

切片的步長:

nums = list(range(1,21))
print(nums[0:11])  #執行結果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
print(nums[0:11:2])  #每隔2個字符取一個值,2是步長,執行結果:[1, 3, 5, 7, 9, 11]
print(nums[::-1])  #切片步長為負數時,從后往前取值,取整個列表的值,執行結果:[20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

如果有寫的不對的,歡迎指出~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM