python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python的copy()函数

Python中的copy()函数详解(list,array)

作者:Vic_Hao

这篇文章主要介绍了Python中的copy()函数详解(list,array),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python copy()函数详解(list,array)

list

在这里插入图片描述

python变量名相当于标签名list2 = list1, 直接赋值,实质上指向的是同一个内存值。

任意一个变量(list1 or list2)发生改变,都会影响另外一个。

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的复制操作,分别指向了新的值。

任意改变list3或list4的值,不会影响其他。

array

array类型的数据进行拷贝时,和list类型有一点区别。

在这里插入图片描述

数组切片是原始数组的视图,这意味着数据不会被复制,视图上的任何修改都会被直接反映到源数组上。

array1, array2, array3, array4实际指向同一个内存值,任意修改其中的一个变量,其他变量值都会被修改。

若想要得到的是array切片的一份副本而非视图,就需要显式的进行复制操作函数copy()。

e.g.

array5 = array1.copy() # 对原始的array1的复制
array6 = array[1:4].copy() # 对切片array[1:4]的复制

那么,修改array5或array6,就不会影响array1

Python字典的copy函数

copy的功能

将当前字典复制一个新的字典(与原字典不是相同的内存地址)

copy的用法

用法∶

dict.copy() ->该函数无参数,返回一个一模一样的内存地址不同的字典
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

实战

# 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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文