Discuss / Python / 既然tuple中的list可以修改,为什么变量就不能修改呢?

既然tuple中的list可以修改,为什么变量就不能修改呢?

Topic source

叫我Z

#1 Created at ... [Delete] [Delete and Lock User]

List内的内容可以被修改是因为tuple只是指向了list,tuple的指向的地址不可修改。 那同理,tuple中的变量也只是指向了这个变量。为什么变量修改后,tuple中的内容还是不变呢?

a = 1 L = [3,4,5] T = (a, 2, L) print(a) print(L) print(T) a = 6 L[0] = 7 print(a) print(L) print(T)

1 [3, 4, 5] (1, 2, [3, 4, 5]) 6 [7, 4, 5] (1, 2, [7, 4, 5])

张二笔丶

#2 Created at ... [Delete] [Delete and Lock User]

笨 a = 3 b = a a = 4 print(a) print(b) 这时候下面一行代码会输出4么? 同理 你上面写道 a = 4 T = (a, 2, L) 实际上是 T[0] = a 对于整型这种数据类型 实际上并不是类似指向 而list这种数据类型 L1 = ['A', 'B'] T1 = ('a', 'b', L1) L1[0] = 'X' print(T1) 结果就会变成 ('a', 'b', ['X', 'B']) 可以结合c语言来理解

爱调小铺

#3 Created at ... [Delete] [Delete and Lock User]

a=1,意味着你赋值了1给变量a T(a,2,L)其实就等于T(1,2,L) 因为tuple的指向的地址不可修改 所以你对a赋新的值不会改变T[0]的内容 这是我的理解

你可以把a当成一个快捷方式,a的指向变了,但是a本身不变,而tuple关注的是a而非a的指向。就像一个瓶子,tuple只关注它的外型,而不去管它里面装的是什么。


  • 1

Reply