網(wǎng)站首頁 編程語言 正文
讓我們看看如何在 Python 中復制數(shù)組。 有 3 種復制數(shù)組的方法:
- 只需使用賦值運算符。
- 淺拷貝
- 深拷貝
1 使用賦值運算符
我們可以使用賦值運算符 (=) 創(chuàng)建數(shù)組的副本。
語法:
new_arr = old_ arr
在 Python 中,Assignment
語句不復制對象,它們在目標和對象之間創(chuàng)建綁定。 當我們使用 = 運算符時,用戶認為這會創(chuàng)建一個新對象; 好吧,事實并非如此。 它只創(chuàng)建一個共享原始對象引用的新變量。
示例:
from numpy import *?????????????????? ? arr1 = array([2, 6, 9, 4])???????????? ? print(id(arr1)) ? arr2 = arr1????????????????????????? ? print(id(arr2)) ? arr1[1] = 7???????????????????????? ? print(arr1) print(arr2)
我們可以看到兩個數(shù)組都引用了同一個對象。
2 淺拷貝
一個淺副本意味著構(gòu)造一個新的集合對象,然后用對原始中找到的子對象的引用填充它。 復制過程不會重復,因此不會創(chuàng)建子對象本身的副本。 在淺拷貝的情況下,對象的引用被復制在另一個對象中。 這意味著對對象的副本所做的任何更改都會在原始對象中反映。 我們將使用視圖view()函數(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個數(shù)組引用了不同的對象,但在更改一個數(shù)組值的時候,另一個的值也被更改。
3 深度拷貝
深度拷貝是一個過程,其中復制過程遞歸地發(fā)生。 它意味著首先構(gòu)建一個新的存儲對象,然后用原稿中找到的子對象的副本遞歸地填充它。 在深度拷貝的情況下,將對象的副本復制到另一個對象中。 這意味著對對象的副本所做的任何更改都不反映在原始對象中。 我們將使用copy()函數(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)
這次在一個數(shù)組中所做的更改不會映射在其他數(shù)組中。
4 深度拷貝進階
如果您正在處理numpy矩陣,則numpy.copy()將為您提供深度拷貝。 但是,如果您的矩陣是列表的列表,那么請考慮旋轉(zhuǎn)圖像90度的任務中使用以下方法:
示例:
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ù)刪除并返回列表或給定索引值的最后一個值。
語法:
list_name.pop(index)
參數(shù):
- index(可選) - 彈出并刪除索引處的值。 如果未給出索引,則會彈出并刪除最后一個元素。
返回值:列表中的最后一個值或給定的索引值。
例外:當索引超出范圍時,它會返回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)
原文鏈接:https://blog.51cto.com/u_14857544/5177095
相關(guān)推薦
- 2023-03-23 Android進階CoordinatorLayout協(xié)調(diào)者布局實現(xiàn)吸頂效果_Android
- 2023-01-05 淺析C++中的重載,隱藏和覆蓋_C 語言
- 2022-09-20 redis的string類型及bitmap介紹_Redis
- 2022-06-30 C語言詳細圖解浮點型數(shù)據(jù)的存儲實現(xiàn)_C 語言
- 2023-01-08 Android?Application的使用全面解析_Android
- 2023-03-04 React深入分析更新的創(chuàng)建源碼_React
- 2023-03-11 Golang跳轉(zhuǎn)語句continue與goto使用語法詳解_Golang
- 2022-06-17 Android性能優(yōu)化之圖片大小,尺寸壓縮綜合解決方案_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支