C++, Java, Python中的浅复制举例分析

本篇内容介绍了“C++, Java, Python中的浅复制举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

01

对象的浅复制,深复制问题,在面试中经常被问到,不管是 C++, Java, 还是 Python,一般都会问这个问题。今天以Python为例来说明浅复制问题。

02

从 List 的 copy() 说起

先从简单说起,如下:

monkeys = ['jone','yone','mary']

wukongs = monkeys.copy()

print(wukongs)

>>>['jone', 'yone', 'mary']

我们成功克隆出 wukongs.

到这里,还只是复制,完全看不出什么是浅复制。

03

接下来,就看浅复制

我们向 monkeys群体中,添加一组动物,如下,然后再次复制 monkeys .

monkeys.append(['nuzha','honghaier'])

print(monkeys)

#>>>['jone', 'yone', 'mary', ['nuzha', 'honghaier']]

print(wukongs)

#>>>['jone', 'yone', 'mary']

#再次复制mokeys给 wukongs

wukongs = monkeys.copy()

print(wukongs)

#>>>

此时打印 wukongs,可以看到:

['jone', 'yone', 'mary', ['nuzha', 'honghaier']]

这一点也不惊讶,接下来,就是见证奇迹的时刻:

wukongs[-1].append('houzi')

print(wukongs)

print(monkeys)

当我们从 wukongs的最后一个元素:它也是一个 list,添加一个动物: houzi 时,我们只向 wukongs 添加了一个动物,此时打印它,不惊讶,但是打印 monkeys ,发现它也有了 houzi

['jone', 'yone', 'mary', ['nuzha', 'honghaier', 'houzi']]['jone', 'yone', 'mary', ['nuzha', 'honghaier', 'houzi']]

这就是浅复制,当一个 list 里的某个元素是个对象,比如 list, tuple, dict 及自建类,如果执行copy(),这个元素只是指针值的复制,不会递归复制它的内存。因此,将会引起上面的现象,因为都是同一个内存地址的两次引用。

“C++, Java, Python中的浅复制举例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注蜗牛博客网站,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram