Python學習之列表常用方法總結
列表(元組)基本操作符回顧
len()函數(shù)在列表與元組上的使用
示例如下:
names = ['Neo', 'Lily', 'Jack'] length = len(names) print(length) # 執(zhí)行結果如下 # >>> 3
注意:len()函數(shù)可以計算除了數(shù)字類型之外的其他所有數(shù)據(jù)類型的長度
列表(元組)之間的累加與乘法
示例如下:
names = ['Neo', 'Lily', 'Jack'] new_names_01 = names + names print(new_names_01) names = ['Neo', 'Lily', 'Jack'] new_names_01 = names * 2 print(new_names_01) # 輸出結果如下: # >>> ['Neo', 'Lily', 'Jack', 'Neo', 'Lily', 'Jack'] # >>> ['Neo', 'Lily', 'Jack', 'Neo', 'Lily', 'Jack']
in 和 not in 在列表(元組)中的用法
in :判斷某個成員(元素)是否在該數(shù)據(jù)結構中,返回結果為布爾值。
not in :判斷某個成員(元素)是否不在該數(shù)據(jù)結構中,返回結果為布爾值。
示例如下:
names = ['Neo', 'Lily', 'Jack'] print(bool('Adam' in names)) print(bool('Adam' not in names)) # 執(zhí)行結果如下: # >>> False # >>> True
列表常用方法
append() 函數(shù)
append()函數(shù)的功能:將一個元素添加當當前列表中
append()函數(shù)的用法:list_append(new_item) ,new_item為添加進列表的新的元素(成員)
append()函數(shù)的注意事項:
- 被添加的元素止水被添加到末尾
- append() 函數(shù)是在原有列表的基礎上進行添加,不需要額外的添加新的變量
示例如下:
names = ['Neo'] names.append('Jack') print(names) # 執(zhí)行結果如下: # >>> ['Neo', 'Jack']
a = [1, 2, 3] b = [4, 5, 6] print(a.append(1)) print(a) a.append(b) print(a) # 執(zhí)行結果如下: # >>> [1, 2, 3, 1] # >>> Node # >>> [1, 2, 3, 1, [4, 5, 6]] a.append(b) 會將整個列表當做一個元素添加進去
這里我們注意到 print(a.append(1)) 返回的是 Node ,這是為什么呢?
原因是append方法只是在恰當?shù)奈恢眯薷脑瓉淼牧斜?!也就是說,不是返回一個列表,而只是修改原來的列表,所以如果用 等式 輸出的話,返回是None 。去掉返回值即可得到新的列表!
看下面兩個示例:
# 原代碼: list= [1,2,3,4] list= list.append(5) print(list) # 輸出: # >>> None # 修改后代碼 list= [1,2,3,4] list.append(5) print(list) # 輸出: # >>> 1,2,3,4,5
insert() 函數(shù)
insert() 函數(shù)的功能:講一個元素添加到列表的指定位置中
insert() 函數(shù)的用法:list.insert(index, new_item) , index為新的元素放在的新的位置(數(shù)字,下標位),new_item為填的新成員(元素)
insert() 函數(shù)與append()函數(shù)的區(qū)別:
- insert() 函數(shù)可以將元素添加至任意的位置,而append()函數(shù)只能將元素添加之末尾。
- 如果insert() 函數(shù)傳入的位置不存在,則將新的元素添加至列表結尾
示例如下:
friuts = ['橘子', '香蕉', '火龍果'] friuts.insert(1, '蘋果') print(friuts) # 執(zhí)行結果如下: # >>> ['橘子', '蘋果', '香蕉', '火龍果'] friuts.insert(10, '鴨梨') print(friuts) # 執(zhí)行結果如下: # >>> '橘子', '蘋果', '香蕉', '火龍果', '鴨梨']
count() 函數(shù)
count() 函數(shù)的功能:返回列表(元組)中某個成員(元素)的個數(shù)
count() 函數(shù)的用法:inttype = list.count(item) , item為想要查詢的個數(shù)
count() 函數(shù)的注意事項:如果查詢的成員(元素)不存在,則返回 0;列表只會檢查完整元素是否存在需要計算的內容。
示例如下:
friuts = ['橘子', '香蕉', '火龍果', '香蕉', '蘋果'] count = friuts.count('香蕉') print('friuts 列表中香蕉出現(xiàn)的次數(shù)為 ' + str(count) + ' 次') # 執(zhí)行結果如下: # >>> friuts 列表中香蕉出現(xiàn)的次數(shù)為 2 次 # 注意事項:如果查詢的成員(元素)不存在,則返回 0;列表只會檢查完整元素是否存在需要計算的內容。 friuts = ['橘子', '香蕉', '火龍果', '香蕉', '蘋果'] count = friuts.count('香') print('friuts 列表中\(zhòng)'香\'出現(xiàn)的次數(shù)為 ' + str(count) + ' 次') # 執(zhí)行結果如下: # >>> friuts 列表中'香'出現(xiàn)的次數(shù)為 0 次
remove() 函數(shù)
remove() 函數(shù)的功能:刪除列表中的某個元素
remove() 函數(shù)的用法:list_remove = list.remove(item) , item為想要刪除的元素
remove() 函數(shù)的注意事項:
- 如果刪除的成員(元素)不存在,則會直接報錯
- 如果被刪除的元素有多個,只會刪除第一個
- remove() 函數(shù)不會返回一個新的列表,而是在原有的列表中對成員(元素)執(zhí)行刪除動作
示例如下:
books = ['Python', 'Java', 'PHP'] books.remove('PHP') print(books) # 執(zhí)行結果如下: # >>> ['Python', 'Java']
Python內置函數(shù) del
del 函數(shù)的功能:將變量完全刪除(即踢打內存管家將變量從內存中刪除)
示例如下:
books = ['Python', 'Java', 'PHP'] books.del() print(books) # 執(zhí)行結果如下: # >>> NameError: name 'books' is not defined. Did you mean: 'bool'?
reverse() 函數(shù)
reverse() 函數(shù)的功能:對當前列表順序的反轉
reverse() 函數(shù)的用法: list = list.reverse() , 無參數(shù)傳遞
示例如下:
books = ['Python', 'Java', 'PHP'] books.reverse() print(books) # 執(zhí)行結果如下: # >>> ['PHP', 'Java', 'Python']
sort() 函數(shù)
sort() 函數(shù)的功能:對當前列表按照一定的規(guī)律進行排序
sort() 函數(shù)的用法: list = list.sort(cmp=Node, key=Node, reverse=False)
- cmp —> 可選參數(shù),制定排序方案的函數(shù)
- key —> 參數(shù)比較
- reverse —> 排序規(guī)則,reverse = True (降序);reverse = False (升序),升序是默認狀態(tài)
- 這里的 cmp 和 key涉及到函數(shù)的知識點,后續(xù)的函數(shù)相關章節(jié)會詳細介紹
sort() 函數(shù)的注意事項:列表中的元素類型必須相同,否則會報錯,無法排序
示例如下:
books = ['Python', 'C', 'PHP', 'Go', 'C++', 'Java'] books.sort() print(books) # 執(zhí)行結果如下: # >>> ['C', 'C++', 'Go', 'Java', 'PHP', 'Python'] int_lists = [79, 6, 99, 46, 30] int_lists.sort(reverse=True) print(int_lists) # 執(zhí)行結果如下: # >>> [99, 79, 46, 30, 6] test_list = ['Hello', 666, 3.14, True] test_list.sort() print(test_list) # 執(zhí)行結果如下: # >>> TypeError: '<' not supported between instances of 'int' and 'str'
clear() 函數(shù)
clear() 函數(shù)的功能:將當前列表的數(shù)據(jù)清空
clear() 函數(shù)的用法: list = list.clear() , 該函數(shù)無參數(shù),無返回值
示例如下:
int_list = [79, 6, 99, 46, 30] int_list.clear() print(int_list) print(len(int_list)) # 執(zhí)行結果如下: # >>> [] # >>> 0
思考一個問題:當我們使用 clear() 函數(shù) 清空一個列表時,和重新命名一個空的列表,哪個更節(jié)省資源?
其實相對來說使用 clear() 函數(shù)更節(jié)省資源;當我們創(chuàng)造一個變量的時候,會占用一個內存地址,使用該變量之后該變量地址則會被內存管家清空。再次使用時,又會生成新的內存地址,這個過程也是需要消耗資源的,只是因為速度處理的比較快我們無法感知罷了。
copy() 函數(shù)
copy() 函數(shù)的功能:將當前列表復制一份新的列表,雖然新的列表雖與舊的列表的內容相同,但是內存地址不同
copy() 函數(shù)的用法:list = list.copy() ,該函數(shù)無參數(shù),返回一個與舊列表一模一樣的列表
copy() 函數(shù)與 2次賦值 的區(qū)別:
- 二次賦值的變量與原始變量共享相同的內存地址空間
- copy() 函數(shù)創(chuàng)建的新列表與原始列表不是一個內存空間,新列表的變量值不因原列表變量的值的變更而變更
- copy() 函數(shù)屬于淺拷貝
示例如下:
old_list = [1, 2, 3, 4, 5] new_list = old_list.copy() print(new_list) print("\'old_list\'內存地址為:" + str(id(old_list)), "\'new_list\'內存地址為:" + str(id(new_list))) # 執(zhí)行結果如下: # >>> [1, 2, 3, 4, 5] # >>> 'old_list'內存地址為:2175764462080 'new_list'內存地址為:2175767330496
copy() 函數(shù)與 2次賦值 的區(qū)別示例如下:
old_list = [1, 2, 3, 4, 5] new_list_01 = old_list new_list_02 = old_list.copy() old_list.append(6) print(new_list_01) print(new_list_02) # 執(zhí)行結果如下: # >>> [1, 2, 3, 4, 5, 6] # >>> [1, 2, 3, 4, 5]
淺拷貝
什么是淺拷貝?
通俗的說,我們有一個列表 a,列表里的元素還是列表。當我們拷貝出新列表 b 后,無論是 a 還是 b 的內部的列表中的數(shù)據(jù)發(fā)生了變化后,相互之間都會受到影響。這就是淺拷貝。
淺拷貝示例如下:
old_list = [[1, 2, 3], [4, 5]] new_list = old_list.copy() old_list[1].append(6) print(str(old_list), "--------," + str(new_list)) # 執(zhí)行結果如下: # >>> [[1, 2, 3], [4, 5, 6]] --------,[[1, 2, 3], [4, 5, 6]] new_list[0].append(0) print(str(old_list), "--------," + str(new_list)) # 執(zhí)行結果如下: # >>> [[1, 2, 3, 0], [4, 5, 6]] --------,[[1, 2, 3, 0], [4, 5, 6]]
深拷貝
什么是深拷貝?
深拷貝不僅對列表第一層進行了 copy ,對深層的數(shù)據(jù)也進行了 copy, 原始變量與新變量之間完全不共享數(shù)據(jù),這就是深拷貝。
深拷貝示例如下:
old_list_deepcopy = [[1, 2, 4], [4, 5]] new_list_deepcopy = copy.deepcopy(old_list_deepcopy) old_list_deepcopy[1].append(6) print(str(old_list_deepcopy), "--------," + str(new_list_deepcopy)) # 執(zhí)行結果如下: # >>> [[1, 2, 4], [4, 5, 6]] --------,[[1, 2, 4], [4, 5]] new_list_deepcopy[0].append(0) print(str(old_list_deepcopy), "--------," + str(new_list_deepcopy)) # 執(zhí)行結果如下: # >>> [[1, 2, 4], [4, 5, 6]] --------,[[1, 2, 4, 0], [4, 5]]
關于淺拷貝與深拷貝,我們再來看看對 數(shù)字類型 和 字符串類型又是怎樣的,示例如下:
str_1 = "python" print("str_1: ", str_1, id(str_1)) str_2 = str_1 print("str_2: ", str_2, id(str_2)) str_3 = copy.copy(str_2) print("str_3: ", str_3, id(str_3)) str_4 = copy.deepcopy(str_1) print("str_4: ", str_4, id(str_4)) # 執(zhí)行結果如下: # >>> str_1: ?python 140222883317104 # >>> str_2: ?python 140222883317104 # >>> str_3: ?python 140222883317104 # >>> str_4: ?python 140222883317104
可以看出,數(shù)字類型與字符串類型的淺拷貝與深拷貝是沒有區(qū)別的,都是指向的同意內存地址,所以深拷貝與淺拷貝是沒有意義的
extend() 函數(shù)
extend() 函數(shù)的功能:將其他列表或元組中的元素一次性的導入到當前列表中
extend() 函數(shù)的用法:list = list.extend(iterable) ,iterable 代表列表或元組,該函數(shù)無返回值。
示例如下:
students = ['Neo', 'Jack', 'Lily'] new_students = ('Lilei', 'Lily') print(id(students)) # 執(zhí)行結果如下: # >>> 2032966498816 students.extend(new_students) print(students) print(id(students)) # 執(zhí)行結果如下: # >>> ['Neo', 'Jack', 'Lily', 'Lilei', 'Lily']?? ??? ?相同的成員(元素)并不會覆蓋掉 # >>> 2032966498816
小練習:完成列表合并功能
例如給出兩個列表[1, 3, 5, 7, 9]和[2, 4, 6, 8, 10],最終合并為[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_1 = [1, 3, 5, 7, 9] list_2 = [2, 4, 6, 8, 10] list_1.extend(list_2) print(list_1) # 執(zhí)行結果如下: # >>> [1, 3, 5, 7, 9, 2, 4, 6, 8, 10] list_1.sort() print(list_1) # 執(zhí)行結果如下: # >>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
以上就是Python學習之列表常用方法總結的詳細內容,更多關于Python列表的資料請關注腳本之家其它相關文章!
相關文章
Python常見庫matplotlib學習筆記之畫圖中各個模塊的含義及修改方法
matplotlib是python最著名的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合交互式地進行制圖,下面這篇文章主要給大家介紹了關于Python常見庫matplotlib學習筆記之畫圖中各個模塊的含義及修改方法的相關資料,需要的朋友可以參考下2023-05-05Python實現(xiàn)手機號自動判斷男女性別(實例解析)
這篇文章主要介紹了Python實現(xiàn)手機號自動判斷男女性別,本文性別判斷主要依靠airtest中的自動化測試實現(xiàn),通過實例代碼給大家講解的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12Python 代碼實現(xiàn)列表的最小公倍數(shù)
這篇文章主要介紹了Python 代碼實現(xiàn)列表的最小公倍數(shù),代碼實現(xiàn)了計算列表中元素的最小公倍數(shù)的功能,包括公式介紹,需要的朋友可以參考一下2021-11-11python中的插值 scipy-interp的實現(xiàn)代碼
這篇文章主要介紹了python中的插值 scipy-interp的實現(xiàn)代碼,需要的朋友可以參考下2018-07-07Python實現(xiàn)MySQL操作的方法小結【安裝,連接,增刪改查等】
這篇文章主要介紹了Python實現(xiàn)MySQL操作的方法,結合實例形式分析了Python針對mysql的安裝,連接,增刪改查等操作實現(xiàn)方法,需要的朋友可以參考下2017-07-07