国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解Python的三種拷貝方式

2020-02-15 21:17:04
字體:
來源:轉載
供稿:網友

在練習列表的操作的時候我發現賦值之后的列表會隨著被賦值的列表改變而改變,就像是C語言中用指向同一實際變量的指針進行操作一樣。這是因為Python中有三種拷貝方式:淺拷貝、深拷貝和賦值拷貝。

賦值拷貝就像是定義新指針并指向了同一內存區域,對任意一個列表名進行操作,其他的也會變化。

深拷貝的作用是完全拷貝一個列表A并賦值給另一列表B。以下是深度拷貝與列表操作的樣例。記得在使用深拷貝的時候要引入copy包。

import copy #對列表的增刪改numbers_Ori = ['one', 'two', 'three', 'four']print('origin')print(numbers_Ori) #deepcopy()是copy包里的方法,作用是將一個列表完全復制一份,賦值給指定新列表#若只是用numbers = numbers_Ori來賦值則兩個變量名將指向同一內存區域,修改任意一個后另一個也會隨之變動 #增numbers_2 = copy.deepcopy(numbers_Ori)numbers_2.append('five')print('append//////////////////')print(numbers_2) numbers_3 = copy.deepcopy(numbers_Ori)numbers_3.insert(2, 'two and_a_half')print('insert////////////////////')print(numbers_3) #刪numbers_4 = copy.deepcopy(numbers_Ori)del numbers_4[2]print('del///////////////////////')print(numbers_4) numbers_5 = copy.deepcopy(numbers_Ori)num=numbers_5.pop(3)print('pop////////////////////////')print(numbers_5)print('picked ' + num + ' up') numbers_6 = copy.deepcopy(numbers_Ori)numbers_6.remove('one')print('remove/////////////////////')print(numbers_6) #改numbers_7 = copy.deepcopy(numbers_Ori)numbers_7[0] = '1'print('改/////////////////////////')print(numbers_7) #可嘗試將每一個"copy.deepcopy(numbers_Ori)"換成單獨的"numbers_Ori"嘗試賦值拷貝#或換成"numbers_Ori.copy()"嘗試淺拷貝

淺拷貝對于一維列表而言和深拷貝一樣,而對于多維列表,修改B的一維內容時A不會變化;而修改高維內容時A也會隨之變化,我們分別嘗試在一維、二維和三維部分添加字符串

numbers = ['one', 'two', 'three', 'four', 'five', ['six', 'seven', ['eight', 'nine']]]numbers_1 = numbers.copy()numbers_1.append('add')#在一維列表的末尾添加字符串print(numbers_1)print(numbers)numbers = ['one', 'two', 'three', 'four', 'five', ['six', 'seven', ['eight', 'nine']]]numbers_1 = numbers.copy()numbers_1[-1].append('add')#在二維列表的末尾添加字符串print(numbers_1)print(numbers)numbers = ['one', 'two', 'three', 'four', 'five', ['six', 'seven', ['eight', 'nine']]]numbers_1 = numbers.copy()numbers_1[-1][-1].append('add')#在三維列表的末尾添加字符串print(numbers_1)print(numbers)

其中,numbers_1[-1]的意思是指定了numbers_1的最后一個元素,即二維部分"['six', 'seven', ['eight', 'nine']]",參數-1可以替換,但其他元素不是列表而是字符串,字符串不能append(),所以會報錯;同理[-1][-1]就是三維部分"['eight', 'nine']",因為它是二維部分的最后一個元素。添加在末尾是因為使用了append(),而不是-1的原因。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云安县| 花垣县| 鄂伦春自治旗| 绵阳市| 扎鲁特旗| 云浮市| 莱阳市| 衡阳县| 喀喇| 石河子市| 阳泉市| 新密市| 广西| 渭南市| 白朗县| 雷山县| 祁东县| 时尚| 高台县| 临高县| 长葛市| 卢龙县| 柳州市| 即墨市| 凤城市| 兴义市| 抚宁县| 晋中市| 张家界市| 钟山县| 陕西省| 通道| 东至县| 东安县| 银川市| 镇坪县| 昌都县| 益阳市| 富阳市| 原平市| 弥勒县|