a = [1]
创建索引 a 指向 list [1],a 不是列表。
b = a
不是复制操作,只是将 a 的索引list [1] 索引给 b,b 不是列表。修改 a 会同时修改 b,因为都指向同一个 list。 如果打印两者内存地址id()
,则相同:
>>> id(a)
37498753
>>> id(b)
37498753
复制操作:
way1:切片运算符 [:]
返回一个序列的切片。切片过程是切下 list 的一部分,创建新 list,即将切下的部分复制到新 list:
>>> a[:]
[1]
>>> id(a)
3498590
>>> id(a[:])
6548609
way2:list()
是 list 构造函数。它会在传入的数列基础上新建一个 list。 数列不一定是 list,它可以是任何类型的数列:
>>> my_tuple = (1, 2, 3)
>>> my_list = list(my_tuple)
>>> print my_list
[1, 2, 3]
>>> id(my_tuple)
34897323
>>> id(my_list)
26182485