Python之深浅拷贝

本文主要讨论copyview或者说deep copyshallow copy。下文使用深拷贝一词表示复制对象的每一个元素。使用浅拷贝一词表示仅复制对象的浅层。在讨论与Numpy相关知识时使用拷贝表示对数组数据的深拷贝,使用视图一词表示共享数组数据。

Q1 从list构造array,使用复制还是视图?

A1 如果list中是相同基本数据类型(int, float等),则采用copy,否则采用view。因为如果list保存如字典这类数据,np的数组没法以连续内存保存这些数据,因此不得不采用view形式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> import numpy as np
>>> a = [[1, 2], [3, 4]]
>>> b = np.array(a)
>>> b
array([[1, 2],
[3, 4]])
>>> b[0][0] = 0
>>> a
[[1, 2], [3, 4]]
>>> b
array([[0, 2],
[3, 4]])
>>> a = [{'a': 1, 'b':2}, {'a': 3, 'b': 4}]
>>> b = np.array(a)
>>> b[0]['a'] = 0
>>> a
[{'a': 0, 'b': 2}, {'a': 3, 'b': 4}]

Python内置数据类型嵌套结构的浅拷贝

1568258910146

------ 本文结束------
赞赏此文?求鼓励,求支持!
  • 本文标题: Python之深浅拷贝
  • 本文作者: Jiang.G.F
  • 创建于: 2019年12月21日 - 23时12分
  • 更新于: 2020年03月03日 - 11时03分
  • 本文链接: https://gfjiangly.github.io/Python/copy.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
0%