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實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖片爬蟲(chóng)
在本文中,我們將學(xué)習(xí)如何使用Python創(chuàng)建一個(gè)簡(jiǎn)單的圖片爬蟲(chóng),我們將利用requests庫(kù)來(lái)發(fā)送HTTP請(qǐng)求,BeautifulSoup庫(kù)來(lái)解析HTML頁(yè)面,以及os和shutil庫(kù)來(lái)下載和保存圖片,通過(guò)這個(gè)教程,你將學(xué)會(huì)如何爬取網(wǎng)頁(yè)上的圖片并保存到本地,需要的朋友可以參考下2024-02-02
python pygame模塊編寫(xiě)飛機(jī)大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了python pygame模塊編寫(xiě)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Python操作word實(shí)現(xiàn)添加文字或圖片水印
這篇文章主要為大家詳細(xì)介紹了如何使用Spire.Doc for Python在程序中的輕松添加文字和圖像水印到Word文檔,感興趣的小伙伴可以跟隨小編一起了解一下2023-10-10
Python字符串處理實(shí)現(xiàn)單詞反轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Python字符串處理實(shí)現(xiàn)單詞反轉(zhuǎn)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
PyCharm活動(dòng)模板設(shè)置步驟實(shí)現(xiàn)
很多情況,我們?cè)趯?xiě)代碼都會(huì)存在經(jīng)常要寫(xiě)一些簡(jiǎn)單且又重復(fù)的代碼,Pycharm中的活動(dòng)模板可以把這些使用頻率很高的一些代碼打包起來(lái)設(shè)置一個(gè)快捷鍵,本文就來(lái)介紹一下如何實(shí)現(xiàn)2023-12-12
Python OpenCV使用閾值方法進(jìn)行圖像處理
圖像閾值處理是計(jì)算機(jī)視覺(jué)和圖像處理中一種非?;A(chǔ)而重要的技術(shù),通過(guò)閾值化操作,可以將圖像的像素值按照一定標(biāo)準(zhǔn)分為兩類(lèi),在 Python 中,OpenCV 提供了便捷的函數(shù)來(lái)實(shí)現(xiàn)各種閾值處理技術(shù),本文將深入介紹如何在 OpenCV 中使用閾值方法進(jìn)行圖像處理2024-12-12

