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在运算后,会原地修改原始值。

上一篇下一篇

猜你喜欢

热点阅读