Python中的copy()函數(shù)詳解(list,array)
Python copy()函數(shù)詳解(list,array)
list
python變量名相當(dāng)于標(biāo)簽名list2 = list1, 直接賦值,實(shí)質(zhì)上指向的是同一個(gè)內(nèi)存值。
任意一個(gè)變量(list1 or list2)發(fā)生改變,都會(huì)影響另外一個(gè)。
e.g.
>>> list1=[1,2,3,4,5,6] >>> list2=list1 >>> list1[2]=88 >>> list1 [1, 2, 88, 4, 5, 6] >>> list2 [1, 2, 88, 4, 5, 6]
而list3和list4是通過切片對list1的復(fù)制操作,分別指向了新的值。
任意改變list3或list4的值,不會(huì)影響其他。
array
array類型的數(shù)據(jù)進(jìn)行拷貝時(shí),和list類型有一點(diǎn)區(qū)別。
數(shù)組切片是原始數(shù)組的視圖,這意味著數(shù)據(jù)不會(huì)被復(fù)制,視圖上的任何修改都會(huì)被直接反映到源數(shù)組上。
array1, array2, array3, array4實(shí)際指向同一個(gè)內(nèi)存值,任意修改其中的一個(gè)變量,其他變量值都會(huì)被修改。
若想要得到的是array切片的一份副本而非視圖,就需要顯式的進(jìn)行復(fù)制操作函數(shù)copy()。
e.g.
array5 = array1.copy() # 對原始的array1的復(fù)制 array6 = array[1:4].copy() # 對切片array[1:4]的復(fù)制
那么,修改array5或array6,就不會(huì)影響array1
Python字典的copy函數(shù)
copy的功能
將當(dāng)前字典復(fù)制一個(gè)新的字典(與原字典不是相同的內(nèi)存地址)
copy的用法
用法∶
dict.copy() ->該函數(shù)無參數(shù),返回一個(gè)一模一樣的內(nèi)存地址不同的字典 In [33]: old_dict = {'name' : 'insane' , 'age' : 33} In [34]: new_dict = ld_dict.copy() In [35]: id(new_dict) != id(old_dict) Out[35]: True
實(shí)戰(zhàn)
# coding:utf-8 fruits = { 'apple': 30, 'banana': 50, 'pear': 100 } real_fruits = fruits.copy() print(real_fruits) real_fruits['orange'] = 50 real_fruits.update({'cherry': 100}) print(real_fruits) print('原始fruits:', fruits) real_fruits['apple'] = real_fruits['apple'] - 5 print(real_fruits) real_fruits['pear'] -= 3 print(real_fruits) real_fruits.clear() print(real_fruits) print('第二天。。。') real_fruits = fruits.copy() print(real_fruits)
{'apple': 30, 'banana': 50, 'pear': 100} {'apple': 30, 'banana': 50, 'pear': 100, 'orange': 50, 'cherry': 100} 原始fruits: {'apple': 30, 'banana': 50, 'pear': 100} {'apple': 25, 'banana': 50, 'pear': 100, 'orange': 50, 'cherry': 100} {'apple': 25, 'banana': 50, 'pear': 97, 'orange': 50, 'cherry': 100} {} 第二天。。。 {'apple': 30, 'banana': 50, 'pear': 100} Process finished with exit code 0
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Virtualenv 搭建 Py項(xiàng)目運(yùn)行環(huán)境的教程詳解
這篇文章主要介紹了Virtualenv 搭建 Py項(xiàng)目運(yùn)行環(huán)境的詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06在Python的Django框架的視圖中使用Session的方法
這篇文章主要介紹了在Python的Django框架的視圖中使用Session的方法,包括相關(guān)的設(shè)置測試Cookies的方法,需要的朋友可以參考下2015-07-07Python結(jié)合wxauto實(shí)現(xiàn)智能微信聊天機(jī)器人
wxauto?是我在2020年開發(fā)的一個(gè)基于?UIAutomation?的開源?Python?微信自動(dòng)化庫,這篇文章主要介紹了Python結(jié)合wxauto實(shí)現(xiàn)智能微信聊天機(jī)器人,需要的朋友可以參考下2024-07-07