Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)
生活随笔
收集整理的這篇文章主要介紹了
Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python中的對象之間賦值時是按引用傳遞的,如果需要拷貝對象,需要使用標準庫中的copy模塊。
1. copy.copy 淺拷貝 只拷貝父對象,不會拷貝對象的內部的子對象。
2. copy.deepcopy 深拷貝 拷貝對象及其子對象
一個很好的例子:
import?copy
a?=?[1,?2,?3,?4,?['a',?'b']]??#原始對象
b?=?a??#賦值,傳對象的引用
c?=?copy.copy(a)??#對象拷貝,淺拷貝
d?=?copy.deepcopy(a)??#對象拷貝,深拷貝
a.append(5)??#修改對象a
a[4].append('c')??#修改對象a中的['a',?'b']數組對象
print?'a?=?',?a
print?'b?=?',?b
print?'c?=?',?c
print?'d?=?',?d
輸出結果:
a =? [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b =? [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c =? [1, 2, 3, 4, ['a', 'b', 'c']]
d =? [1, 2, 3, 4, ['a', 'b']]
1. copy.copy 淺拷貝 只拷貝父對象,不會拷貝對象的內部的子對象。
2. copy.deepcopy 深拷貝 拷貝對象及其子對象
一個很好的例子:
import?copy
a?=?[1,?2,?3,?4,?['a',?'b']]??#原始對象
b?=?a??#賦值,傳對象的引用
c?=?copy.copy(a)??#對象拷貝,淺拷貝
d?=?copy.deepcopy(a)??#對象拷貝,深拷貝
a.append(5)??#修改對象a
a[4].append('c')??#修改對象a中的['a',?'b']數組對象
print?'a?=?',?a
print?'b?=?',?b
print?'c?=?',?c
print?'d?=?',?d
輸出結果:
a =? [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b =? [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c =? [1, 2, 3, 4, ['a', 'b', 'c']]
d =? [1, 2, 3, 4, ['a', 'b']]
Python 天天美味系列(總)
Python 天天美味(20) - 命令行參數sys.argv? ?
Python 天天美味(21) - httplib,smtplib ?
Python 天天美味(22) - 拷貝對象(深拷貝deepcopy與淺拷貝copy) ?
Python 天天美味(23) - enumerate遍歷數組
Python 天天美味(24) - 初始化多維數組 ?
...轉載于:https://www.cnblogs.com/coderzh/archive/2008/05/17/1201506.html
總結
以上是生活随笔為你收集整理的Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java描述设计模式(14):解释器模式
- 下一篇: 批量添加域用户