python數(shù)組的復(fù)制與列表中的pop
讓我們看看如何在 Python 中復(fù)制數(shù)組。 有 3 種復(fù)制數(shù)組的方法:
- 只需使用賦值運(yùn)算符。
- 淺拷貝
- 深拷貝
1 使用賦值運(yùn)算符
我們可以使用賦值運(yùn)算符 (=) 創(chuàng)建數(shù)組的副本。
語(yǔ)法:
new_arr = old_ arr
在 Python 中,Assignment
語(yǔ)句不復(fù)制對(duì)象,它們?cè)谀繕?biāo)和對(duì)象之間創(chuàng)建綁定。 當(dāng)我們使用 = 運(yùn)算符時(shí),用戶認(rèn)為這會(huì)創(chuàng)建一個(gè)新對(duì)象; 好吧,事實(shí)并非如此。 它只創(chuàng)建一個(gè)共享原始對(duì)象引用的新變量。
示例:
from numpy import *?????????????????? ? arr1 = array([2, 6, 9, 4])???????????? ? print(id(arr1)) ? arr2 = arr1????????????????????????? ? print(id(arr2)) ? arr1[1] = 7???????????????????????? ? print(arr1) print(arr2)
我們可以看到兩個(gè)數(shù)組都引用了同一個(gè)對(duì)象。
2 淺拷貝
一個(gè)淺副本意味著構(gòu)造一個(gè)新的集合對(duì)象,然后用對(duì)原始中找到的子對(duì)象的引用填充它。 復(fù)制過(guò)程不會(huì)重復(fù),因此不會(huì)創(chuàng)建子對(duì)象本身的副本。 在淺拷貝的情況下,對(duì)象的引用被復(fù)制在另一個(gè)對(duì)象中。 這意味著對(duì)對(duì)象的副本所做的任何更改都會(huì)在原始對(duì)象中反映。 我們將使用視圖view()函數(shù)來(lái)實(shí)現(xiàn)淺副本。
示例:
from numpy import *????????????????? ?? arr1 = array([2, 6, 9, 4]) ? print(id(arr1)) ? arr2 = arr1.view()? ? print(id(arr2)) ?? arr1[1] = 7??????????????????????? ?? print(arr1) print(arr2)
這次雖然2個(gè)數(shù)組引用了不同的對(duì)象,但在更改一個(gè)數(shù)組值的時(shí)候,另一個(gè)的值也被更改。
3 深度拷貝
深度拷貝是一個(gè)過(guò)程,其中復(fù)制過(guò)程遞歸地發(fā)生。 它意味著首先構(gòu)建一個(gè)新的存儲(chǔ)對(duì)象,然后用原稿中找到的子對(duì)象的副本遞歸地填充它。 在深度拷貝的情況下,將對(duì)象的副本復(fù)制到另一個(gè)對(duì)象中。 這意味著對(duì)對(duì)象的副本所做的任何更改都不反映在原始對(duì)象中。 我們將使用copy()函數(shù)來(lái)實(shí)現(xiàn)深度副本。
示例:
from numpy import *????????????????? ?? arr1 = array([2, 6, 9, 4]) ? print(id(arr1)) ? arr2 = arr1.copy() ? print(id(arr2)) ?? arr1[1] = 7??????????????????????? ?? print(arr1) print(arr2)
這次在一個(gè)數(shù)組中所做的更改不會(huì)映射在其他數(shù)組中。
4 深度拷貝進(jìn)階
如果您正在處理numpy矩陣,則numpy.copy()將為您提供深度拷貝。 但是,如果您的矩陣是列表的列表,那么請(qǐng)考慮旋轉(zhuǎn)圖像90度的任務(wù)中使用以下方法:
示例:
import copy ? def rotate_matrix(image): ????copy_image_one = copy.deepcopy(image) ????print("Original", matrix) ????print("Copy of original", copy_image_one) ????N = len(matrix) ? ????for row in range(N): ????????for column in range(N): ????????????copy_image_one[row][column] = image[row][N-column-1] ? ????print("After modification") ????print("Original", matrix) ????print("Copy", copy_image_one) ? ????copy_image_two = [list(row) for row in copy_image_one] ? ????for row in range(N): ????????for column in range(N): ????????????copy_image_two[column][row] = copy_image_one[row][column] ? ????return copy_image_two ? ? if __name__ == "__main__": ????matrix = [[1, 2, 3], ??????????????[4, 5, 6], ??????????????[7, 8, 9]] ????print("Rotated image", rotate_matrix(matrix))
Python列表POP()是Python中的內(nèi)置函數(shù),該函數(shù)刪除并返回列表或給定索引值的最后一個(gè)值。
語(yǔ)法:
list_name.pop(index)
參數(shù):
- index(可選) - 彈出并刪除索引處的值。 如果未給出索引,則會(huì)彈出并刪除最后一個(gè)元素。
返回值:列表中的最后一個(gè)值或給定的索引值。
例外:當(dāng)索引超出范圍時(shí),它會(huì)返回IndexError
。
例一:
list1 = [ 1, 2, 3, 4, 5, 6 ] ? print(list1.pop()) ? print("New List after pop : ", list1, "\n") ? list2 = [1, 2, 3, ('cat', 'bat'), 4] ? print(list2.pop()) print(list2.pop()) print(list2.pop()) ? print("New List after pop : ", list2, "\n")
例二:
list1 = [ 1, 2, 3, 4, 5, 6 ] ? print(list1.pop(), list1) print(list1.pop(0), list1)
例三:
list1 = [ 1, 2, 3, 4, 5, 6 ] print(list1.pop(8))
例四:
fruit = [['Orange','Fruit'],['Banana','Fruit'], ['Mango', 'Fruit']] consume = ['Juice', 'Eat'] possible = [] for item in fruit : ????for use in consume : ????????? ????????item.append(use) ????????possible.append(item[:]) ????????item.pop(-1) print(possible)
到此這篇關(guān)于python數(shù)組的復(fù)制與列表中的pop的文章就介紹到這了,更多相關(guān)python數(shù)組復(fù)制與pop()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
面向新手解析python Beautiful Soup基本用法
這篇文章主要介紹了面向新手解析python Beautiful Soup基本用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07關(guān)于python3.7安裝matplotlib始終無(wú)法成功的問(wèn)題的解決
這篇文章主要介紹了關(guān)于python3.7安裝matplotlib始終無(wú)法成功的問(wèn)題的解決,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Python調(diào)用Jar包的兩種方式小結(jié)
這篇文章主要介紹了Python調(diào)用Jar包的兩種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Python遠(yuǎn)程方法調(diào)用實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Python遠(yuǎn)程方法調(diào)用實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07GCN?圖神經(jīng)網(wǎng)絡(luò)使用詳解?可視化?Pytorch
這篇文章主要介紹了GCN?圖神經(jīng)網(wǎng)絡(luò)使用詳解?可視化?Pytorch,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Python實(shí)現(xiàn)的json文件讀取及中文亂碼顯示問(wèn)題解決方法
這篇文章主要介紹了Python實(shí)現(xiàn)的json文件讀取及中文亂碼顯示問(wèn)題解決方法,涉及Python針對(duì)json文件的讀取載入、編碼轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08