Python列表的淺拷貝與深拷貝
對(duì)列表深拷貝就是無(wú)論怎樣改動(dòng)新列表(單維or多維),原列表都不變。
而下面的淺拷貝,對(duì)于多維列表,只是第一維深拷貝了(嵌套的List保存的是地址,復(fù)制過(guò)去的時(shí)候是把地址復(fù)制過(guò)去了),所以說(shuō)其內(nèi)層的list元素改變了,原列表也會(huì)變。
一、淺拷貝(均是只對(duì)第一層進(jìn)行深拷貝)
1. for循環(huán)依次賦值
old = [1, [1, 2, 3], 3] new = [] for i in range(len(old)): ? ? new.append(old[i]) new[0] = 3 new[1][0] = 3 print(old) print(new) ''' [1, [3, 2, 3], 3] [3, [3, 2, 3], 3] '''
2. 使用copy()函數(shù)
old = [1,[1,2,3],3] new = old.copy() new[0] = 3 new[1][0] =3 print(old) print(new)
輸出:
[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]
3. 使用列表生成式
old = [1,[1,2,3],3] new = [i for i in old] ? new[0] = 3 new[1][0] = 3 print(old) print(new)
輸出:
[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]
4. 使用索引 [:]
old = [1,[1,2,3],3] new = old[:] ? new[0] = 3 new[1][0] = 3 print(old) print(new)
輸出:
[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]
淺拷貝對(duì)于單層列表就是深拷貝,如:
old = [1,2,3] new = old[:] new[0] = 666 print(old) print(new) """ [1, 2, 3] [666, 2, 3] """
二、深拷貝
使用用deepcopy()方法,才是真正的復(fù)制了一個(gè)全新的和原列表無(wú)關(guān)的:
import copy old = [1,[1,2,3],3] new = copy.deepcopy(old) ? new[0] = 3 new[1][0] = 3 """ [1, [1, 2, 3], 3] [3, [3, 2, 3], 3] """
到此這篇關(guān)于Python列表的淺拷貝與深拷貝的文章就介紹到這了,更多相關(guān)Python淺拷貝與深拷貝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python利用pandas和matplotlib實(shí)現(xiàn)繪制雙柱狀圖
在數(shù)據(jù)分析和可視化中,常用的一種圖形類型是柱狀圖,柱狀圖能夠清晰地展示不同分類變量的數(shù)值,并支持多組數(shù)據(jù)進(jìn)行對(duì)比,本篇文章將介紹python如何使用pandas和matplotlib繪制雙柱狀圖,需要的可以參考下2023-11-11python GUI庫(kù)圖形界面開發(fā)之PyQt5信號(hào)與槽的高級(jí)使用技巧裝飾器信號(hào)與槽詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)之PyQt5信號(hào)與槽的高級(jí)使用技巧裝飾器信號(hào)與槽詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03Python使用captcha庫(kù)制作帶參數(shù)輸入驗(yàn)證碼案例
這篇文章主要介紹了Python使用captcha庫(kù)制作驗(yàn)證碼,帶參數(shù)輸入,本文通過(guò)實(shí)例案例解析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05python 實(shí)現(xiàn)人和電腦猜拳的示例代碼
這篇文章主要介紹了python 實(shí)現(xiàn)人和電腦猜拳的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03django rest framework vue 實(shí)現(xiàn)用戶登錄詳解
這篇文章主要介紹了django rest framework vue 實(shí)現(xiàn)用戶登錄詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Python編程應(yīng)用設(shè)計(jì)原則詳解
什么是好用的代碼呢?其實(shí)就是代碼質(zhì)量比較高,如何評(píng)價(jià)代碼質(zhì)量的高低呢?最常用的、最重要的評(píng)價(jià)標(biāo)準(zhǔn),就是代碼的可維護(hù)性、可讀性、可擴(kuò)展性、靈活性、簡(jiǎn)潔性、可復(fù)用性、可測(cè)試性2021-09-09python+selenium?實(shí)現(xiàn)掃碼免密登錄示例代碼
這篇文章主要介紹了python+selenium?實(shí)現(xiàn)掃碼免密登錄,首先掃碼登錄獲取cookies保存到本地未后面免密登錄做準(zhǔn)備,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07