算法
- 快速排序
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author: Yang hengyu
# date: 2018-07-31
def quick_sort(list_in):
if not isinstance(list_in, list):
return u'参数错误'
if len(list_in) <= 1:
return list_in
list_a = []
list_b = []
# 标志元素
mark_num = list_in.pop()
for num in list_in:
if num < mark_num:
list_a.append(num)
else:
list_b.append(num)
return quick_sort(list_a) + [mark_num] + quick_sort(list_b)
if __name__ == '__main__':
a = [3, 45, 5, 3, 2, 8, 9, 52, 5]
print quick_sort(a)
基础
- copy和deepcopy区别
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author: Yang hengyu
# date: 2018-07-31
import copy
a = [1, 2, 3]
b = [1, 2, [1, 2, 3]]
aa = copy.copy(a)
bb = copy.copy(b)
deep_aa = copy.deepcopy(a)
deep_bb = copy.deepcopy(b)
a[0] = '1'
b[2][0] = '2'
print aa, bb
print deep_aa, deep_bb
# 打印结果:
[1, 2, 3] [1, 2, ['2', 2, 3]]
[1, 2, 3] [1, 2, [1, 2, 3]]
copy只会复制一层;deepcopy会对每一层(嵌套)都复制,此时deepcopy出来的对象已经不是原来的对象了,虽然实际上会共享不可变的子对象,但不影响它们的相互独立性;
当最外层对象为可变类型时,copy后得到的对象指向新的内存空间,当最外层的对象为不可变类型时,copy后得到的对象指向原对象的内存空间。
赋值:简单地拷贝对象的引用,两个对象的id相同。