美文网首页程序员
python中<list>和<list>

python中<list>和<list>

作者: adonis_stan | 来源:发表于2019-01-07 18:39 被阅读26次
    word = ['123', 'abc', 'abcdefg']
    print(id(word))
    print(id(word[0]))
    #print(word)
    #for w in word:
    for w in word[:]:
        print(id(w))
        if len(w) > 6:
            word.insert(0, 'abcdefg')
    #        word[:].insert(0, 'abcdefg')
    print(id(word))
    print(id(word[0]))
    print(id(word[1]))
    print(id(word[:]))
    #print(word)
    

    运行结果为:

    2200539985928
    2200540187144
    2200540187144
    2200530606992
    2200540187200
    2200539985928
    2200540187200
    2200540187144
    2200539986184
    

          会发现 word[:] 其实是 word 的深拷贝,即 word[:] 和 word 是独立的两个列表变量,对 word 的增删改不会影响 word[:],对 word[:] 的增删改也不会影响到 word。

    python 中,有这样一个情况:

    a = [1, 2, 3]
    b1 = a
    b2 = a[:]
    
    print(a)
    print(id(a))
    print(b1)
    print(id(b1))
    print(b2)
    print(id(b2))
    
    """
    运行结果:
    [1, 2, 3]
    2716794825544
    [1, 2, 3]
    2716794825544
    [1, 2, 3]
    2716794825608
    """
    
    """
    b1是a的浅拷贝,即b1和a一样
    b2是a的深拷贝,即b2和a不一样
    
    b1和b2的内容和a都是一样的,
    但是b1的内存地址和a一样,b2的内存地址和a是不一样的
    
    此处的这个就像按引用传递(b1)和按值传递(b2)
    """
    

    联系方式:
    QQ:1583801169

    相关文章

      网友评论

        本文标题:python中<list>和<list>

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