列表生成式:
例:a=[['1','2'] for i in range(1,3)]
这里a列表里包含两个子列表['1','2']和['1','2'] 这两个子列表是不同的引用。地址是不同的,修改其中一个列表的值不改变另外一个列表。
例:b=[['1','2']]*2
b=[['1','2'],['1','2']]
此时b列表的子列表的元素指向同一个地址,若b[0][0]=4,则b=[['4','2'],['4','2']]
列表与元组赋值
tuple=(1,2,3)
tuple1=tuple[:]
tuple1 is tuple #这里是ture
- 元组是不可变的数据结构,一旦创建就不能被修改。
- 当你创建一个元组并将其赋值给另一个变量,实际上你创建了一个新的引用,但由于元组不可变,它们引用的是相同的元组对象。
- 因此,元组
t
和t1
引用的是相同的元组对象,所以t is t1
返回True
list=[1,2,3]
list1=list[:]
list is list1 #这里是false
- 当你创建一个新列表
list1
并将其赋值为list
的副本时,你实际上创建了一个新的列表对象,它具有与list
相同的值,但在内存中具有不同的标识。 - 因此,
list
和list1
是两个不同的列表对象,它们的标识不同,所以list is list1
返回False