大家都知道,列表是可变数据类型,而可变数据类型的操作尤其需要我们细心,不然很容易出错
来看看这个例子:
list1 = [ 1, 2, 3, 4, 5 ]
list2=[list1]*3
print(list2)
list1[2]='b'
list2[1][1]="a"
print(list1)
print(list2)
大家思考几个问题:
第一处输出list2 值是什么
第一处输出list1 值是什么
第二处输出list2 值是什么
咦,不是对list1 和 list2 分别操作了一次,怎么会都改变这么多呢?
说明不管对list1还是对list2操作,对两者都有影响,说明它们用到了同一块内存空间,而list2的三个元素均发生了相同改变,说明list2的三个元素都共用同一块内存空间
来看一看它们存储的位置:
print(id(list1))
print(id(list2[0]))
print(id(list2[1]))
print(id(list2[2]))
运行结果:
和我们想的一样,它们的存储位置都是一样的,共用同一块空间,一变全变
在以后使用 [ ]* 操作时一定要注意!!!