8.Python编程:tuple的指向不变性

作者: TensorFlow开发者 | 来源:发表于2018-03-25 16:32 被阅读5次

    list 和 tuple

    在python 中list和tuple的最大的区别要分清:list是有序可变的列表,tuple是有序不可变的,一旦初始化就不能改变。

    先来看一个实例:

    # 指向不变性
    my_tuple = ('a', 'b', 'c', ['x', 'y','z'])
    
    # 打印tuple
    print(r'my_tuple = ', end='')
    print(my_tuple)
    
    print('my_tuple[0] = ' + my_tuple[0])
    
    print('my_tuple[1] = ' + my_tuple[1])
    
    print('my_tuple[2] = ' + my_tuple[2])
    
    print(r'my_tuple[3] = ', end='')
    print( my_tuple[3])
    
    print('修改前:my_tuple[3][0] = '+ my_tuple[3][0])
    
    my_tuple[3][0] = 'A'
    print('修改后:my_tuple[3][0] = '+ my_tuple[3][0])
    
    # 打印tuple
    print(r'my_tuple = ', end='')
    print(my_tuple)
    

    运行结果:

    my_tuple = ('a', 'b', 'c', ['x', 'y', 'z'])
    my_tuple[0] = a
    my_tuple[1] = b
    my_tuple[2] = c
    my_tuple[3] = ['x', 'y', 'z']
    修改前:my_tuple[3][0] = x
    修改后:my_tuple[3][0] = A
    my_tuple = ('a', 'b', 'c', ['A', 'y', 'z'])
    

    那这里为什么又可以发生改变了?

    tuple的指向不变性:
    例子中my_tuple[3] 指向的是一个list,而list是一个有序可变的列表。也就是说,my_tuple[3]的内部的元素值可以发生改变。tuple的有序不变,不变的是指向,例子中所指向的list还是原来的list。这样就造成了例子中tuple发生了改变。这就是tuple元组的指向不变性。
    图示如下:


    图示:tuple的指向不变性

    更多了解,可关注微信公众号:人人懂编程


    微信公众号:人人懂编程

    相关文章

      网友评论

      本文标题:8.Python编程:tuple的指向不变性

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