美文网首页Python
python-026-可变量和不可变量、复制二叉树

python-026-可变量和不可变量、复制二叉树

作者: DKider | 来源:发表于2019-03-29 20:10 被阅读13次

    复制列表的操作:
    比如给一个列表:
    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
    

    好的一会我还要爬淘宝,我就先这样了。

    相关文章

      网友评论

        本文标题:python-026-可变量和不可变量、复制二叉树

        本文链接:https://www.haomeiwen.com/subject/xqbrbqtx.html