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

 更新时间:2023年09月08日 16:12:49   作者: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

总结

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

相关文章

  • python操作链表的示例代码

    python操作链表的示例代码

    这篇文章主要介绍了python操作链表的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • Python利用py-redis实现分布式锁

    Python利用py-redis实现分布式锁

    随着业务的增长,后端技术架构会慢慢的从单体服务转向多服务或者微服务的分布式架构,本文主要为大家介绍了如何利用Py-Redis实现简单的分布式锁,需要的可以参考一下
    2023-08-08
  • Python eval()和exec()函数使用详解

    Python eval()和exec()函数使用详解

    exec函数执行的是python语句,没有返回值,eval函数执行的是python表达式,有返回值,exec函数和eval函数都可以传入命名空间作为参数,本文给大家介绍下Python eval()和exec()函数,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • Python实现捕获异常发生的文件和具体行数

    Python实现捕获异常发生的文件和具体行数

    这篇文章主要介绍了Python实现捕获异常发生的文件和具体行数。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Pytorch实现简单自定义网络层的方法

    Pytorch实现简单自定义网络层的方法

    这篇文章主要给大家介绍了关于Pytorch实现简单自定义网络层的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-05-05
  • Python中设置变量作为默认值时容易遇到的错误

    Python中设置变量作为默认值时容易遇到的错误

    这篇文章主要介绍了Python中设置变量作为默认值时容易遇到的错误,这是Python新手经常容易碰到的问题,且往往不会被轻易察觉到,需要的朋友可以参考下
    2015-04-04
  • Python使用QRCode模块生成二维码实例详解

    Python使用QRCode模块生成二维码实例详解

    这篇文章主要介绍了Python使用QRCode模块生成二维码实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • Python中关于property使用的小技巧

    Python中关于property使用的小技巧

    俗话说条条大路通罗马,同样是完成一件事,Python 其实提供了好几个方式供你选择。property() 是一个比较奇葩的BIF,它的作用把方法当作属性来访问,从而提供更加友好访问方式
    2021-09-09
  • python实现异常信息堆栈输出到日志文件

    python实现异常信息堆栈输出到日志文件

    今天小编就为大家分享一篇python实现异常信息堆栈输出到日志文件,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python3网络爬虫之使用User Agent和代理IP隐藏身份

    Python3网络爬虫之使用User Agent和代理IP隐藏身份

    这篇文章主要介绍了Python3网络爬虫之使用User Agent和代理IP隐藏身份,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论