python怎么深拷贝
时间: 2023-07-03 17:06:18 浏览: 88
Python中的深拷贝和浅拷贝详解
在Python中,有两种方法可以实现深拷贝,分别是使用copy库的deepcopy()函数和使用pickle库的dump()和load()函数。
1. 使用copy库的deepcopy()函数:
```python
import copy
# 原始列表
a = [1, 2, [3, 4]]
# 深拷贝
b = copy.deepcopy(a)
# 修改b中的数据
b[0] = 2
b[2][0] = 4
# 输出a和b
print(a) # [1, 2, [3, 4]]
print(b) # [2, 2, [4, 4]]
```
在上面的例子中,我们使用deepcopy()函数对列表a进行深拷贝,得到了一个新的列表b。然后我们修改了b中的数据,但是a并没有受到影响。
2. 使用pickle库的dump()和load()函数:
```python
import pickle
# 原始字典
a = {'name': 'Tom', 'age': 18, 'hobbies': ['reading', 'music']}
# 深拷贝
b = pickle.loads(pickle.dumps(a))
# 修改b中的数据
b['name'] = 'Jerry'
b['hobbies'].append('sports')
# 输出a和b
print(a) # {'name': 'Tom', 'age': 18, 'hobbies': ['reading', 'music']}
print(b) # {'name': 'Jerry', 'age': 18, 'hobbies': ['reading', 'music', 'sports']}
```
在上面的例子中,我们使用pickle库的dump()函数将字典a序列化为一个字符串,并使用loads()函数将其反序列化为一个新的字典b。然后我们修改了b中的数据,但是a并没有受到影响。
阅读全文