python 元组与列表的区别
2022-10-12 本文已影响0人
alue
先看下面两种截然不同的行为
t1 = (1,2,3)
t2 = tuple(t1)
# 或者 t2 = t1[:]
l1=[1,2,3]
l2 = list(l1)
# 或者 l2 = l1[:]
print(t1 is t2) # True
print(l1 is l2) # False
原因是,在python中,元组tuple是不可变类型. 所以为了节省资源,这种构造器会返回同一个对象的引用。而列表是可变对象,会新建一个副本。
类似的,容易迷惑的行为是
t1 = (1,2,3)
t2 = t1
t1 += (4,5)
l1=[1,2,3]
l2 = l1
l1 += [4,5]
print(t1 is t2) # False
print(l1 is l2) # True
不可变类型tuple在做运算后,会新建一个元组,重新绑定给t1。
而可变类型list在运算后,会原地修改原始值。