复制列表的操作:
比如给一个列表:
list = [1,2,3,4,5,6]
复制:
copy_list = list[:]
注意这里不是直接:copy_list = list
这样只是给列表起了个别名。
python的内置类分为可变量和不可变量,比如int\float\str\tuple\frozenset\bool,这几个是不可变量,比如说:
a = 10
a = 1
这样只是新创建了一个值为1的int实例,然后将a指向1,10被抛弃了。就10这个数来说,它本身是一个整型对象,一个数怎么改变,10只能是10,是不能变的。
这在给函数传递参数时,函数内部的形参的变化,并不会改变不可变量本身的值。但是如果传入的是一个可变量——list、dict、set,情况就不同了。如果再函数体内改变了可变量的状态,这个传入的可变参数是会被改变的,也就是外部的实参会被改变。但是如果再函数内部,给这个可变量重新赋值,并不会改变实参。
这段只要不是给arr重新赋值,arr变则brr变:
arr=[1,2,3,4,5]
brr=arr
arr.append(6)
print(arr)
print(brr)
可变量和不可变量,在使用时一定要分清楚,不然会出现意想不到的错误。
复制二叉树:
这与复制链表的操作差不多一个意思,不能重新起个名字,要新创建二叉树节点对象,在将他们构成新的二叉树:
同样利用了三种遍历函数,稍作修改,即可实现,
#复制二叉树,先序遍历、中序遍历、后序遍历都可以
def dup_bitree(root):
"""
递归调用,先序
"""
if None==root:
return None
#复制根节点
dup = BiTNode(None)
#下面三行可以互换位置
dup.left_child=dup_bitree(root.left_child)
dup.right_child=dup_bitree(root.right_child)
dup.data = root.data
#返回复制完的二叉树
return dup
好的一会我还要爬淘宝,我就先这样了。