Python 的深拷贝 和 浅拷贝
来源:互联网 发布:php项目绑定域名访问 编辑:程序博客网 时间:2024/05/17 21:59
今天实现Python的排序问题,比如如下的代码:
def merge(self, l, r): if l == r - 1 or l == r: return mid = (l + r) // 2 self.merge(l, mid) self.merge(mid, r) length = r - l left = [i for i in self.data[l:mid]] right = [i for i in self.data[mid:r]] i = j = 0 k = l while i < len(left) and j < len(right): if left[i] < right[j]: self.data[k] = left[i] i += 1 else: self.data[k] = right[j] j += 1 k += 1 if i == len(left): while k - l < length: self.data[k] = right[j] k += 1 j += 1 else: while k - l < length: self.data[k] = left[i] i += 1 k += 1 def MergeSort(self): len = self.n self.merge(0, len) return self.data
以上是正确的写法,但是一开始的写法是直接使用了:
left = self.data[l:mid]right = self.data[mid+1:r]
这样子实际上left
和right
就是一个实际的应用,也就是说修改这个的时候会同时原来的self.data
的数据,为了避免这个问题,我们的拷贝必须使用 一些特殊的技巧:
newList = list(arr[l:r])newList = [i for i in arr[l:r]]import copy as cp # emmmm,这个缩写,233333newList = cp.copy(arr[l:r])
一般不用引入一个包来解决问题,前两个已经很不错了
阅读全文
0 0
- python 的深拷贝和浅拷贝
- Python的浅拷贝和深拷贝
- Python的浅拷贝和深拷贝
- Python的浅拷贝和深拷贝
- python的浅拷贝和深拷贝
- Python 的深拷贝 和 浅拷贝
- Python对象的拷贝,浅拷贝和深拷贝。
- Python浅拷贝和和深拷贝
- python的引用和浅拷贝和p深拷贝
- Python深拷贝和浅拷贝
- python 浅拷贝和深拷贝
- python中的深拷贝和浅拷贝
- Python之深拷贝和浅拷贝
- python中的深拷贝和浅拷贝
- python 浅拷贝和深拷贝
- python 中的深拷贝和浅拷贝
- Python--浅拷贝和深拷贝
- 图解Python深拷贝和浅拷贝
- Python操作分布式流处理系统Kafka
- DO VO PO DTO
- uboot移植i2c
- Identifier Rules
- 0基础学Python(3) ——列表推导式
- Python 的深拷贝 和 浅拷贝
- Each module has to have a unique path
- Font-Awesome 强大的字体图标
- Sublime Text 3126 Win32版本暴力破解过程
- charles抓包时设置host
- oracle 的几种sql优化2
- MATLAB调用C/C++函数的方法
- Servlet生命周期初步体验
- 资料整理