说明
list
和tuple
是一种有序的集合list
可以随意添加和删除元素,tuple
一旦初始化就不能修改对于tuple
, 如果对象包含对其他对象的引用,则这些其他对象可能是可变的并且可能会被修改; 但是,由不可变对象直接引用的对象集合不能更改 tuple
是静态的固定大小的,而list
是动态分配存储空间,自动扩容的
a_tuple = ( "apple" , "pear" , "banana" )
b_tuple = ( [ 1 , 2 ] , [ 3 , 4 ] , [ 5 , 6 ] )
a_tuple[ 1 ] = 'purpose'
> TypeError: 'tuple' object does not support item assignment
'''
tuple 对象不能修改
'''
a_tuple = ( "apple" , "pear" , "banana" )
b_tuple = ( [ 1 , 2 ] , [ 3 , 4 ] , [ 5 , 6 ] )
b_tuple[ 1 ] . append( 7 )
print ( b_tuple)
> ( [ 1 , 2 ] , [ 3 , 4 , 7 ] , [ 5 , 6 ] )
'''
tuple 对象里面包含的是可变对象list, 里面的可变对象值,可以更改
'''
b_tuple = ( [ 1 , 2 ] , [ 3 , 4 ] , [ 5 , 6 ] )
try :
b_tuple[ 1 ] += [ 8 , 9 ]
except Exception as e:
print ( e)
print ( b_tuple[ 1 ] )
> 'tuple' object does not support item assignment
> [ 3 , 4 , 8 , 9 ]
'''
+= 并不是原子操作, 而是 extend 和 = 两个动作, 这里 = 操作虽然会抛出异常, 但 extend 操作已经修改成功了
'''